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 lock, try_lock and unlock in action:
#include <iostream>
#include <mutex>
int main()
{
std::mutex test;
if (test.try_lock()) {
std::cout << "first try_lock successful\n";
} else {
std::cout << "first try_lock NOT successful\n";
return 0;
}
test.unlock();
test.lock();
if (test.try_lock()) {
std::cout << "second try_lock successful\n";
} else {
std::cout << "second try_lock NOT successful\n";
}
test.lock(); // trying to lock an already-locked std::mutex will
// block program execution, so we'll hang here
}Possible output:
first try_lock successful second try_lock NOT successful (program hangs)
See also
| locks the mutex, blocks if the mutex is not available (public member function) | |
| tries to lock the mutex, returns if the mutex is not available (public member function) |
Please login to continue.