W3cubDocs

/C++

std::mutex::unlock

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)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp/thread/mutex/unlock