名稱空間
變體
操作

std::condition_variable_any

來自 cppreference.com
< cpp‎ | thread
 
 
併發支援庫
執行緒
(C++11)
(C++20)
this_thread 名稱空間
(C++11)
(C++11)
(C++11)
協同取消
互斥
(C++11)
通用鎖管理
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
條件變數
condition_variable_any
(C++11)
(C++11)
訊號量
門閂和屏障
(C++20)
(C++20)
期值
(C++11)
(C++11)
(C++11)
(C++11)
安全回收
(C++26)
危險指標
原子型別
(C++11)
(C++20)
原子型別的初始化
(C++11)(C++20 中已棄用)
(C++11)(C++20 中已棄用)
記憶體排序
(C++11)(C++26 中已棄用)
原子操作的自由函式
原子標誌的自由函式
 
 
在標頭檔案 <condition_variable> 中定義
class condition_variable_any;
(C++11 起)

condition_variable_any 類是 std::condition_variable 的泛化。而 std::condition_variable 僅適用於 std::unique_lock<std::mutex>condition_variable_any 可以操作任何滿足 BasicLockable 要求的鎖。

有關條件變數語義的描述,請參見 std::condition_variable

std::condition_variable_any 類是一個 StandardLayoutType。它不是 可複製構造可移動構造可複製賦值,或 可移動賦值 的。

如果鎖是 std::unique_lock<std::mutex>std::condition_variable 可能提供更好的效能。

目錄

[編輯] 成員函式

構造物件
(public member function) [編輯]
析構物件
(public member function) [編輯]
operator=
[已刪除]
不可複製賦值
(public member function) [編輯]
Notification
通知一個等待執行緒
(public member function) [編輯]
通知所有等待執行緒
(public member function) [編輯]
Waiting
阻塞當前執行緒直到條件變數被喚醒
(public member function) [編輯]
阻塞當前執行緒,直到條件變數被喚醒或達到指定的超時時長。
(public member function) [編輯]
阻塞當前執行緒,直到條件變數被喚醒或達到指定的時間點。
(public member function) [編輯]

[編輯] 注意

std::condition_variable_any 可以與 std::shared_lock 一起使用,以在共享所有權模式下等待 std::shared_mutex

std::condition_variable_any 與自定義 Lockable 型別的可能用途是提供方便的、可中斷的等待:自定義鎖操作將按預期鎖定關聯的互斥體,並執行必要的設定以在收到中斷訊號時通知此條件變數。[1]

[編輯] 另請參見

提供與 std::unique_lock 關聯的條件變數
(class) [編輯]

[編輯] 外部連結

  1. Anthony Williams (2012, 1st ed./ 2019, 2nd ed.), “C++ Concurrency in Action”, 9.2.4 “中斷 std::condition_variable_any 上的等待”.