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

溫馨提示×

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
嘉义市| 徐水县| 锦屏县| 四子王旗| 韶关市| 梁河县| 沅陵县| 青阳县| 阿尔山市| 西乡县| 房山区| 平度市| 健康| 镇江市| 花垣县| 罗平县| 康马县| 东台市| 星子县| 红安县| 黄平县| 巫山县| 聂拉木县| 宁陕县| 大姚县| 永昌县| 贺兰县| 孟村| 琼结县| 万州区| 嫩江县| 海淀区| 达尔| 苍山县| 林口县| 武威市| 滕州市| 库车县| 青州市| 阆中市| 木里|