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

溫馨提示×

C++使用條件變量實現線程間通信

c++
小樊
82
2024-07-05 19:27:27
欄目: 編程語言

條件變量是C++中多線程編程中常用的同步機制之一,用于在線程之間進行通信和同步。條件變量通常與互斥鎖一起使用,以實現線程的等待和喚醒。

下面是一個簡單的示例,演示了如何使用條件變量來實現線程間通信:

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

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

void thread_func() {
    std::unique_lock<std::mutex> lock(mtx);
    while (!ready) {
        cv.wait(lock);
    }
    std::cout << "Thread is ready!" << std::endl;
}

int main() {
    std::thread t(thread_func);

    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;
}

在上面的示例中,主線程創建一個新的線程,并在2秒后將ready設置為true,然后通過cv.notify_one()通知等待的線程。子線程在等待期間通過cv.wait(lock)等待條件變量cv的通知,一旦收到通知,子線程將繼續執行。

需要注意的是,在使用條件變量時,需要確保在等待條件變量之前持有std::unique_lock鎖,以確保線程安全。

希望這個示例能幫助你了解如何使用條件變量實現線程間通信。

0
宁海县| 淮滨县| 长治市| 大埔区| 蕲春县| 遵义市| 定西市| 府谷县| 阿勒泰市| 浑源县| 景泰县| 平山县| 英德市| 平和县| 哈密市| 黔东| 昆山市| 铜川市| 三江| 醴陵市| 荥经县| 石家庄市| 盐津县| 祁门县| 清新县| 秭归县| 宝兴县| 汉川市| 湖南省| 舒城县| 洮南市| 扶绥县| 遂川县| 济源市| 聊城市| 赤壁市| 灵寿县| 富蕴县| 淮阳县| 赣榆县| 寿阳县|