名稱空間
變體
操作

C++ 命名要求: SharedTimedMutex (C++14 起)

來自 cppreference.com
 
 
C++ 命名要求
基本
型別屬性
全庫範圍




Container(容器)
容器元素
迭代器 (Iterator)
流 I/O
格式化器
隨機數
併發
SharedTimedMutex(共享定時互斥量)
(C++14)
Ranges(範圍)
多維檢視
其他

 

SharedTimedMutex 要求擴充套件了 TimedMutex 要求,以包含共享鎖所有權模式。

[編輯] 要求

此外,型別為 SharedTimedMutex 的物件 m 支援定時共享操作

  • 表示式 m.try_lock_shared_for(duration) 具有以下特性
  • 行為類似於原子操作。
  • 嘗試在 duration 指定的持續時間內獲取互斥體的共享所有權。如果 duration 小於或等於 duration.zero(),則嘗試在不等待的情況下獲取所有權(如同透過 try_lock())。否則,此函式會阻塞,直到獲取互斥體或直到 duration 指定的時間過去。它僅在成功時才在 duration 內返回,但即使在 duration 期間的某個時刻它沒有被其他執行緒擁有,也可能無法獲取互斥體。在任何情況下,如果獲取了互斥體,它返回 true,否則返回 false
  • 如果 try_lock_shared_for(duration) 成功,則同一物件上先前的 unlock() 操作會與此操作進行*同步*(等同於 release-acquire std::memory_order)。
  • 如果呼叫執行緒已以任何模式擁有互斥體,則行為未定義。
  • 在執行期間,時鐘、時間點或持續時間可能會丟擲異常(標準庫提供的時鐘、時間點和持續時間從不丟擲)。
  • 如果丟擲異常,則不會獲取共享鎖。
  • 表示式 m.try_lock_shared_until(time_point) 具有以下特性
  • 行為類似於原子操作。
  • 嘗試在 time_point 之前剩餘的時間內獲取互斥體的共享所有權。如果 time_point 已經過去,則嘗試在不加鎖的情況下獲取所有權(如同透過 try_lock())。否則,此函式會阻塞,直到獲取互斥體或直到 time_point 指定的時間過去。它僅在成功時才在 time_point 之前返回,但即使在 time_point 之前的某個時刻它沒有被其他執行緒擁有,也可能無法獲取互斥體。在任何情況下,如果獲取了互斥體,它返回 true,否則返回 false
  • 如果 try_lock_shared_until(time_point) 成功,則同一物件上先前的 unlock() 操作會與此操作進行*同步*(等同於 release-acquire std::memory_order)。
  • 如果呼叫執行緒已以任何模式擁有互斥體,則行為未定義。
  • 在執行期間,時鐘、時間點或持續時間可能會丟擲異常(標準庫提供的時鐘、時間點和持續時間從不丟擲)。
  • 如果丟擲異常,則不會獲取共享鎖。

[編輯] 標準庫

以下標準庫型別滿足 SharedTimedMutex 要求

提供共享互斥設施,並實現帶超時鎖
(類) [編輯]

[編輯] 另請參閱