91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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
内黄县| 滨海县| 开江县| 那坡县| 黎平县| 阿荣旗| 清苑县| 沙洋县| 洛宁县| 广丰县| 交城县| 石屏县| 江永县| 大洼县| 罗城| 潮安县| 永修县| 方正县| 雅江县| 明水县| 孟州市| 安龙县| 旅游| 五华县| 潞西市| 黔西县| 资源县| 松滋市| 沂源县| 偃师市| 庐江县| 湖州市| 永定县| 嘉荫县| 吉林省| 大宁县| 垣曲县| 额敏县| 榕江县| 新巴尔虎右旗| 廊坊市|