Namespaces
Variants
Views
Actions

std::mutex::unlock

From cppreference.com
< cpp‎ | thread‎ | mutex
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.

Contents

[edit] Parameters

(none)

[edit] Return value

(none)

[edit] Exceptions

(none)

[edit] Notes

unlock() is usually not called directly: std::unique_lock and std::lock_guard are used to manage exclusive locking.

[edit] 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)

[edit] See also

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]