std::recursive_mutex::try_lock
bool try_lock(); | (since C++11) |
Tries to lock the mutex. Returns immediately. On successful lock acquisition returns true
, otherwise returns false
.
This function is allowed to fail spuriously and return false
even if the mutex is not currently locked by any other thread.
A thread may call try_lock
on a recursive mutex repeatedly. Successful calls to try_lock
increment the ownsership count: the mutex will only be released after the thread makes a matching number of calls to unlock
.
The maximum number of levels of ownership is unspecified. A call to try_lock
will return false
if this number is exceeded.
Prior unlock()
operation on the same mutex synchronizes-with (as defined in std::memory_order
) this operation if it returns true
. Note that prior lock()
does not synchronize with this operation if it returns false
.
Parameters
(none).
Return value
true
if the lock was acquired successfully, otherwise false
.
Exceptions
(none).
Example
#include <iostream> #include <mutex> int main() { std::recursive_mutex test; if (test.try_lock()==true) { std::cout << "lock acquired" << std::endl; test.unlock(); //now unlock the mutex } else { std::cout << "lock not acquired" << std::endl; } test.lock(); //to lock it again if (test.try_lock()) { //true can be left out std::cout << "lock acquired" << std::endl; } else { std::cout << "lock not acquired" << std::endl; } test.unlock(); }
Output:
lock acquired lock not acquired
See also
locks the mutex, blocks if the mutex is not available (public member function) |
|
unlocks the mutex (public member function) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp/thread/recursive_mutex/try_lock