亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

C++ getcwd如何處理多線程同步

c++
小樊
81
2024-11-27 14:53:14
欄目: 編程語言

在C++中,getcwd()函數用于獲取當前工作目錄

以下是一個使用互斥鎖(mutex)實現多線程同步的示例:

#include <iostream>
#include <thread>
#include <mutex>
#include <vector>
#include <cstring>
#include <unistd.h>

std::mutex mtx; // 定義互斥鎖
char cwd[PATH_MAX]; // 存儲當前工作目錄的緩沖區

void print_cwd() {
    mtx.lock(); // 在打印當前工作目錄之前加鎖
    if (getcwd(cwd, sizeof(cwd)) != nullptr) {
        std::cout << "Current working directory: " << cwd << std::endl;
    } else {
        std::cerr << "Error getting current working directory" << std::endl;
    }
    mtx.unlock(); // 解鎖
}

int main() {
    std::vector<std::thread> threads;

    // 創建多個線程
    for (int i = 0; i < 10; ++i) {
        threads.emplace_back(print_cwd);
    }

    // 等待所有線程完成
    for (auto& t : threads) {
        t.join();
    }

    return 0;
}

在這個示例中,我們創建了一個互斥鎖mtx和一個全局緩沖區cwdprint_cwd()函數在打印當前工作目錄之前加鎖,并在完成后解鎖。這樣可以確保在同一時間只有一個線程可以訪問和修改cwd

請注意,這個示例僅用于演示目的。在實際應用中,你可能需要考慮其他因素,例如錯誤處理和線程安全的數據結構。

0
民县| 漾濞| 延安市| 民权县| 崇信县| 安吉县| 永川市| 丽江市| 凤凰县| 武隆县| 鄱阳县| 辽宁省| 鹿泉市| 普格县| 镇远县| 会昌县| 米泉市| 鹤峰县| 卢龙县| 广州市| 南木林县| 长沙县| 保定市| 即墨市| 静宁县| 云林县| 新巴尔虎右旗| 庆元县| 衡南县| 江西省| 昭平县| 乡城县| 日土县| 大方县| 鲁山县| 万载县| 福海县| 禹城市| 安新县| 内乡县| 鲁甸县|