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

溫馨提示×

C++ std::mutex和條件變量如何配合使用

c++
小樊
83
2024-06-26 10:22:56
欄目: 編程語言

在C++中,std::mutex和條件變量通常一起使用來實現線程之間的同步。條件變量用于在一定條件下通知等待的線程,而std::mutex用于保護共享數據以避免競爭條件。

以下是std::mutex和條件變量如何配合使用的基本示例:

#include <iostream>
#include <thread>
#include <mutex>
#include <condition_variable>

std::mutex mtx;
std::condition_variable cv;
bool ready = false;

void worker_thread() {
    std::unique_lock<std::mutex> lock(mtx);
    // 等待條件變量通知
    cv.wait(lock, []{ return ready; });
    
    // do some work
    std::cout << "Worker thread is doing some work" << std::endl;
}

int main() {
    std::thread t(worker_thread);
    
    // do some work
    std::this_thread::sleep_for(std::chrono::seconds(2));
    
    // 通知條件變量
    {
        std::lock_guard<std::mutex> lock(mtx);
        ready = true;
    }
    cv.notify_one();
    
    t.join();
    
    return 0;
}

在上面的示例中,worker_thread函數在等待條件變量通知時會被阻塞,直到在主線程中通過notify_one()通知條件變量。在主線程中,先設置ready為true,然后通過通知條件變量來觸發worker_thread的執行。

使用std::mutex和條件變量可以很好地實現線程之間的同步和通信,確保線程在適當的時機執行和協作。

0
东阳市| 左云县| 含山县| 鄂温| 台江县| 科技| 射洪县| 虞城县| 交口县| 邛崃市| 太和县| 威信县| 淮北市| 双桥区| 融水| 冀州市| 夹江县| 泸西县| 迁安市| 永泰县| 梁平县| 德昌县| 皮山县| 堆龙德庆县| 平和县| 吉安县| 阿拉善左旗| 大丰市| 辽宁省| 中西区| 西乌| 资中县| 陆川县| 南昌市| 隆林| 泰安市| 沛县| 永胜县| 阿鲁科尔沁旗| 庆阳市| 天长市|