std::recursive_mutex::try_lock
來自 cppreference.com
< cpp | thread | recursive mutex
bool try_lock() noexcept; |
(C++11 起) | |
嘗試鎖定互斥體。立即返回。如果成功獲取鎖,則返回 true,否則返回 false。
此函式可能虛假失敗並返回 false,即使互斥體當前未被任何其他執行緒鎖定。
一個執行緒可以重複在遞迴互斥體上呼叫 try_lock
。成功的 try_lock
呼叫會增加所有權計數:互斥體只有在該執行緒進行相應次數的 unlock 呼叫後才會被釋放。
所有權的最大層數未指定。如果超出此層數,對 try_lock
的呼叫將返回 false。
如果此操作返回 true,則同一互斥體上之前的 unlock() 操作與此操作同步(如 std::memory_order 中定義)。請注意,如果此操作返回 false,則之前的 lock() 不與此操作同步。
目錄 |
[編輯] 引數
(無)
[編輯] 返回值
如果成功獲取鎖,則為 true,否則為 false。
[編輯] 異常
不丟擲任何異常。
[編輯] 示例
執行此程式碼
#include <iostream> #include <mutex> int main() { std::recursive_mutex test; if (test.try_lock()) { std::cout << "lock acquired\n"; test.unlock(); } else std::cout << "lock not acquired\n"; test.lock(); // non-recursive mutex would return false from try_lock now if (test.try_lock()) { std::cout << "lock acquired\n"; test.unlock(); } else std::cout << "lock not acquired\n"; test.unlock(); }
輸出
lock acquired lock acquired
[編輯] 參閱
鎖定互斥體,如果互斥體不可用則阻塞 (public member function) | |
解鎖互斥體 (public member function) | |
C documentation for mtx_trylock
|