條件變數用於執行緒同步,允許執行緒等待特定條件滿足,具體作用包括:通知執行緒:執行緒呼叫 notify_one() 或 notify_all() 通知其他執行緒條件已滿足。等待條件:執行緒呼叫 wait() 等待條件滿足,滿足後執行緒被喚醒。
C++ 多執行緒程式設計中條件變數的作用
簡介
條件變數是一種用於執行緒同步的同步原語,允許執行緒等待某個特定的條件被滿足。在 C++ 中,條件變數是透過 std::condition_variable
類別實現的。
作用
condition variables 的作用是:
notify_one()
或notify_all()
函數通知其他執行緒某個條件已被滿足。 wait()
函數等待某個條件被滿足。當條件被滿足時,執行緒將被喚醒。 實戰案例
考慮以下使用條件變數的生產者-消費者問題:
#include <iostream> #include <condition_variable> #include <mutex> std::mutex m; // 互斥锁 std::condition_variable cv; // 条件变量 bool ready = false; // 是否准备好 void producer() { std::unique_lock<std::mutex> lock(m); // 生产数据... ready = true; cv.notify_one(); // 通知消费者数据已准备好 } void consumer() { std::unique_lock<std::mutex> lock(m); while (!ready) { cv.wait(lock); } // 等待数据准备好 // 消费数据... } int main() { std::thread t1(producer); std::thread t2(consumer); t1.join(); t2.join(); return 0; }
在這個範例中,生產者執行緒使用條件變數通知消費者執行緒資料已準備好。消費者執行緒在條件變數上等待,直到資料準備好為止。
結論
條件變數是 C++ 中用來同步多執行緒程式的強大工具。它們允許執行緒等待某個特定條件,直到該條件被滿足為止。
以上是C++ 多執行緒程式設計中 condition variables 的作用是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!