std::mutex::unlock (3) - Linux Manuals
std::mutex::unlock: std::mutex::unlock
Command to display std::mutex::unlock
manual in Linux: $ man 3 std::mutex::unlock
NAME
std::mutex::unlock - std::mutex::unlock
Synopsis
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 operation synchronizes-with (as defined in std::memory_order) any subsequent lock operation that obtains ownership of the same mutex.
Parameters
(none)
Return value
(none)
Exceptions
(none)
Notes
unlock() is usually not called directly: std::unique_lock and std::lock_guard are used to manage exclusive locking.
Example
This example shows how lock and unlock can be used to protect shared data.
// Run this code
#include <iostream>
#include <chrono>
#include <thread>
#include <mutex>
int g_num = 0; // protected by g_num_mutex
std::mutex g_num_mutex;
void slow_increment(int id)
{
for (int i = 0; i < 3; ++i) {
g_num_mutex.lock();
++g_num;
std::cout << id << " => " << g_num << '\n';
g_num_mutex.unlock();
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 => 1
1 => 2
0 => 3
1 => 4
0 => 5
1 => 6
See also
locks the mutex, blocks if the mutex is not available
lock (public member function)
tries to lock the mutex, returns if the mutex is not available
try_lock (public member function)
Pages related to std::mutex::unlock
- std::mutex::lock (3) - std::mutex::lock
- std::mutex::mutex (3) - std::mutex::mutex
- std::mutex::native_handle (3) - std::mutex::native_handle
- std::mutex::try_lock (3) - std::mutex::try_lock
- std::mutex::~mutex (3) - std::mutex::~mutex
- std::mutex (3) - std::mutex
- std::multimap (3) - std::multimap
- std::multimap<Key,T,Compare,Allocator>::begin, (3) - std::multimap<Key,T,Compare,Allocator>::begin,
- std::multimap<Key,T,Compare,Allocator>::begin,std::multimap<Key,T,Compare,Allocator>::cbegin (3) - std::multimap<Key,T,Compare,Allocator>::begin,std::multimap<Key,T,Compare,Allocator>::cbegin
- std::multimap<Key,T,Compare,Allocator>::clear (3) - std::multimap<Key,T,Compare,Allocator>::clear
- std::multimap<Key,T,Compare,Allocator>::contains (3) - std::multimap<Key,T,Compare,Allocator>::contains