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

溫馨提示×

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
广东省| 玉山县| 尼勒克县| 桦南县| 娄烦县| 甘孜县| 镇原县| 镇沅| 陆河县| 垣曲县| 沙湾县| 苍山县| 固安县| 宁远县| 金塔县| 苏尼特右旗| 库尔勒市| 磐石市| 昌图县| 安阳市| 江口县| 敦煌市| 南部县| 定结县| 从化市| 萝北县| 崇礼县| 大理市| 新蔡县| 太仓市| 台北县| 普兰县| 新沂市| 肃北| 甘谷县| 曲靖市| 苏州市| 会理县| 宁波市| 鹤山市| 乌鲁木齐市|