std::shared_lock<Mutex>::try_lock_for

出自cppreference.com
 
 
並發支持庫
線程
(C++11)
(C++20)
this_thread 命名空間
(C++11)
(C++11)
(C++11)
協作式取消
互斥
(C++11)
通用鎖管理
(C++11)
(C++11)
(C++11)
(C++11)
(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 棄用)
原子操作的自由函數
原子標誌的自由函數
 
 
template< class Rep, class Period >
bool try_lock_for( const std::chrono::duration<Rep,Period>& timeout_duration );
(C++14 起)

嘗試以共享模式鎖定關聯互斥體。阻塞直至經過 timeout_duration 或獲得鎖這兩個事件的先達成者為止。成功獲得鎖時返回 true,否則返回 false。相當於調用 mutex()->try_lock_shared_for(timeout_duration)

由於調度或資源爭奪延遲,此函數可能阻塞長於 timeout_duration

標準建議使用穩定時鐘。若實現用系統時鐘代替,則等待時間亦可能對時鐘調節敏感。

若無關聯互斥體或互斥體已被鎖定則拋出 std::system_error

Mutex 不符合可共享定時鎖定 (SharedTimedLockable) 要求則行為未定義。

參數

timeout_duration - 要阻塞的最大時長

返回值

若已成功獲得互斥體的所有權則為 true,否則為 false

異常

  • mutex()->try_lock_shared_for(timeout_duration) 所拋的任何異常。
  • 若無關聯互斥體,則拋出以 std::errc::operation_not_permitted 為錯誤碼的 std::system_error
  • 若互斥體已被鎖定,則拋出以 std::errc::resource_deadlock_would_occur 為錯誤碼的 std::system_error

示例

參閱

嘗試鎖定(即獲得其所有權)關聯的可定時鎖定 (TimedLockable) 互斥體,若互斥體在給定時長中不可用則返回
(std::unique_lock<Mutex> 的公開成員函數) [編輯]
鎖定關聯的互斥體
(公開成員函數) [編輯]
嘗試鎖定關聯的互斥體
(公開成員函數) [編輯]
嘗試鎖定關聯的互斥體,直至指定的時間點
(公開成員函數) [編輯]
解鎖關聯的互斥體
(公開成員函數) [編輯]