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) |
提供共享互斥設施,並實現帶超時鎖 (類) |