public member function
<mutex>
std::unique_lock::try_lockLock mutex if not locked
Calls member try_lock of the managed mutex object, and uses the returned value to set the owning state.If the owning state is already true
before the call, or if the object currently manages no mutex object, the function throws a system_error exception.
true
if the function succeeds in locking the managed mutex object.
false
otherwise.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// unique_lock::try_lock example
#include <iostream> // std::cout
#include <vector> // std::vector
#include <thread> // std::thread
#include <mutex> // std::mutex, std::unique_lock, std::defer_lock
std::mutex mtx; // mutex for critical section
void print_star () {
std::unique_lock<std::mutex> lck(mtx,std::defer_lock);
// print '*' if successfully locked, 'x' otherwise:
if (lck.try_lock())
std::cout << '*';
else
std::cout << 'x';
}
int main ()
{
std::vector<std::thread> threads;
for (int i=0; i<500; ++i)
threads.emplace_back(print_star);
for (auto& x: threads) x.join();
return 0;
}
*****************************x******************************x*x***x***x*x*x**x** x**********x******************************************************************** ************x*x*x*x************************************************************* *******x********x**********x**************************************************** ***************************************x*x*x*x**x*x*x*x*x*x********************* **x***************************************************************************** ***************x****
If the call fails, a system_error exception is thrown:
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4