##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# std::mutex::unlock

From cppreference.com
< cpp‎ | thread‎ | mutex

[edit template]

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.

### [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:

Run this code

    #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

lock | locks the mutex, blocks if the mutex is not available (public member function) [edit]
try_lock | tries to lock the mutex, returns if the mutex is not available (public member function) [edit]

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/thread/mutex/unlock&oldid=51382"