在C++中,條件變量(Condition Variable)是一種用于線程之間進行同步的機制。它允許一個線程等待另一個線程滿足某個特定條件,然后繼續執行。
條件變量的使用需要結合互斥量(Mutex)來實現。以下是在C++中使用條件變量的一般步驟:
std::condition_variable cv;
std::mutex mtx;
std::unique_lock<std::mutex>
結合條件變量和互斥量進行等待:std::unique_lock<std::mutex> lock(mtx);
cv.wait(lock); // 等待條件變量滿足特定條件
notify_one()
或notify_all()
函數通知等待線程:cv.notify_one(); // 喚醒一個等待線程
// 或
cv.notify_all(); // 喚醒所有等待線程
需要注意的是,在等待線程中,cv.wait(lock)
會自動釋放互斥量,并將線程置于等待狀態,直到有其他線程調用notify_one()
或notify_all()
喚醒它。喚醒后,等待線程會重新獲取互斥量,并繼續執行。
此外,條件變量還可以與某個特定條件相關聯,以便在等待線程中檢查該條件是否滿足。例如,可以使用cv.wait(lock, predicate)
的形式,在等待線程中檢查條件是否滿足。其中,predicate
是一個可調用對象,用于檢查特定條件是否滿足。
以上是使用條件變量的基本方法,您可以根據具體的需求進行適當的調整和擴展。