首頁 > 後端開發 > C++ > C++ 多執行緒程式設計中 condition variables 的作用是什麼?

C++ 多執行緒程式設計中 condition variables 的作用是什麼?

王林
發布: 2024-06-04 09:31:01
原創
341 人瀏覽過

條件變數用於執行緒同步,允許執行緒等待特定條件滿足,具體作用包括:通知執行緒:執行緒呼叫 notify_one() 或 notify_all() 通知其他執行緒條件已滿足。等待條件:執行緒呼叫 wait() 等待條件滿足,滿足後執行緒被喚醒。

C++ 多线程编程中 condition variables 的作用是什么?

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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板