|
|
Member functions | ||||
Locking | ||||
mutex::unlock | ||||
Native handle | ||||
void unlock(); | (since C++11) | |
Unlocks the mutex.The mutex must be locked by the current thread of execution, otherwise, the behavior is undefined.
This operationsynchronizes-with (as defined instd::memory_order) any subsequent lock operation that obtains ownership of the same mutex.
unlock()
is usually not called directly:std::unique_lock andstd::lock_guard are used to manage exclusive locking.
This example shows howlock
andunlock
can be used to protect shared data.
#include <chrono>#include <iostream>#include <mutex>#include <thread> int g_num=0;// protected by g_num_mutexstd::mutex g_num_mutex; void slow_increment(int id){for(int i=0; i<3;++i){ g_num_mutex.lock();int g_num_running=++g_num; g_num_mutex.unlock();std::cout<< id<<" => "<< g_num_running<<'\n'; std::this_thread::sleep_for(std::chrono::seconds(1));}} int main(){std::thread t1(slow_increment,0);std::thread t2(slow_increment,1); t1.join(); t2.join();}
Possible output:
0 => 11 => 20 => 31 => 40 => 51 => 6
locks the mutex, blocks if the mutex is not available (public member function)[edit] | |
tries to lock the mutex, returns if the mutex is not available (public member function)[edit] | |
C documentation formtx_unlock |