C++ 命名要求: SharedTimedMutex (C++14 起)
來自 cppreference.com
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 要求
(C++14) |
提供共享互斥設施,並實現帶超時鎖 (類) |