中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

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
德清县| 富阳市| 沁阳市| 馆陶县| 菏泽市| 尤溪县| 呼和浩特市| 永寿县| 滕州市| 义乌市| 昭通市| 高安市| 清徐县| 沙坪坝区| 浦江县| 扶风县| 巨野县| 桓仁| 西华县| 石屏县| 江城| 和龙市| 永顺县| 朔州市| 鲜城| 友谊县| 绥滨县| 高唐县| 长海县| 咸宁市| 昭通市| 松桃| 抚宁县| 永清县| 高邮市| 鞍山市| 富川| 广南县| 荣昌县| 余姚市| 三河市|