CARVIEW |
Select Language
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Mon, 28 Jul 2025 02:51:23 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Location: /reference/mutex/unique_lock/
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 28 Jul 2025 02:51:23 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
ETag: W/"8802-7glJoDJJ2e0cWFYno8o4fRhG0mI"
Content-Encoding: gzip
A unique lock is an object that manages a mutex object with unique ownership in both states: locked and unlocked.
On construction (or by move-assigning to it), the object acquires a mutex object, for whose locking and unlocking operations becomes responsible.
The object supports both states: locked and unlocked.
This class guarantees an unlocked status on destruction (even if not called explicitly). Therefore it is especially useful as an object with automatic duration, as it guarantees the mutex object is properly unlocked in case an exception is thrown.
Note though, that the unique_lock object does not manage the lifetime of the mutex object in any way: the duration of the mutex object shall extend at least until the destruction of the unique_lock that manages it.
Possible output (order of lines may vary, but characters are never mixed):
Reference
C library:
- <cassert> (assert.h)
- <cctype> (ctype.h)
- <cerrno> (errno.h)
-
<cfenv> (fenv.h)C++11
- <cfloat> (float.h)
-
<cinttypes> (inttypes.h)C++11
- <ciso646> (iso646.h)
- <climits> (limits.h)
- <clocale> (locale.h)
- <cmath> (math.h)
- <csetjmp> (setjmp.h)
- <csignal> (signal.h)
- <cstdarg> (stdarg.h)
-
<cstdbool> (stdbool.h)C++11
- <cstddef> (stddef.h)
-
<cstdint> (stdint.h)C++11
- <cstdio> (stdio.h)
- <cstdlib> (stdlib.h)
- <cstring> (string.h)
-
<ctgmath> (tgmath.h)C++11
- <ctime> (time.h)
-
<cuchar> (uchar.h)C++11
- <cwchar> (wchar.h)
- <cwctype> (wctype.h)
Containers:
-
<array>C++11
- <deque>
-
<forward_list>C++11
- <list>
- <map>
- <queue>
- <set>
- <stack>
-
<unordered_map>C++11
-
<unordered_set>C++11
- <vector>
-
Input/Output:
Multi-threading:
-
<atomic>C++11
-
<condition_variable>C++11
-
<future>C++11
-
<mutex>C++11
-
<thread>C++11
-
Other:
- <algorithm>
- <bitset>
-
<chrono>C++11
-
<codecvt>C++11
- <complex>
- <exception>
- <functional>
-
<initializer_list>C++11
- <iterator>
- <limits>
- <locale>
- <memory>
- <new>
- <numeric>
-
<random>C++11
-
<ratio>C++11
-
<regex>C++11
- <stdexcept>
- <string>
-
<system_error>C++11
-
<tuple>C++11
-
<type_traits>C++11
-
<typeindex>C++11
- <typeinfo>
- <utility>
- <valarray>
<mutex>
classes
-
adopt_lock_tC++11
-
defer_lock_tC++11
-
lock_guardC++11
-
mutexC++11
-
once_flagC++11
-
recursive_mutexC++11
-
recursive_timed_mutexC++11
-
timed_mutexC++11
-
try_to_lock_tC++11
-
unique_lockC++11
-
functions
constants
-
adopt_lockC++11
-
defer_lockC++11
-
try_to_lockC++11
-
unique_lock
-
unique_lock::~unique_lockC++11
-
unique_lock::unique_lockC++11
member functions
-
unique_lock::lockC++11
-
unique_lock::mutexC++11
-
unique_lock::operator boolC++11
-
unique_lock::operator=C++11
-
unique_lock::owns_lockC++11
-
unique_lock::releaseC++11
-
unique_lock::swapC++11
-
unique_lock::try_lockC++11
-
unique_lock::try_lock_forC++11
-
unique_lock::try_lock_untilC++11
-
unique_lock::unlockC++11
-
non-member overloads
-
swap (unique_lock)C++11
-
class template
<mutex>
std::unique_lock
template <class Mutex> class unique_lock;
Unique lock
On construction (or by move-assigning to it), the object acquires a mutex object, for whose locking and unlocking operations becomes responsible.
The object supports both states: locked and unlocked.
This class guarantees an unlocked status on destruction (even if not called explicitly). Therefore it is especially useful as an object with automatic duration, as it guarantees the mutex object is properly unlocked in case an exception is thrown.
Note though, that the unique_lock object does not manage the lifetime of the mutex object in any way: the duration of the mutex object shall extend at least until the destruction of the unique_lock that manages it.
Template parameters
- Mutex
- A mutex-like type.
It shall be a basic lockable type, such as mutex (see BasicLockable for requirements).
Member types
member type | definition | description |
---|---|---|
mutex_type | The template parameter (Mutex) | The managed mutex object type |
Member functions
- (constructor)
- Construct unique_lock (public member function)
- (destructor)
- Destroy unique_lock (public member function)
Locking/unlocking
- lock
- Lock mutex (public member function)
- try_lock
- Lock mutex if not locked (public member function)
- try_lock_for
- Try to lock mutex during time span (public member function)
- try_lock_until
- Try to lock mutex until time point (public member function)
- unlock
- Unlock mutex (public member function)
Modifiers
- operator=
- Move-assign unique_lock (public member function)
- swap
- Swap unique locks (public member function)
- release
- Release mutex (public member function)
Observers
- owns_lock
- Owns lock (public member function)
- operator bool
- Return whether it owns a lock (public member function)
- mutex
- Get mutex (public member function)
Non-member overloads
- swap (unique_lock)
- Swap locks (function)
Example
|
|
Possible output (order of lines may vary, but characters are never mixed):
************************************************** $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ |
Home page | Privacy policy
© cplusplus.com, 2000-2025 - All rights reserved - v3.3.4s
Spotted an error? contact us
© cplusplus.com, 2000-2025 - All rights reserved - v3.3.4s
Spotted an error? contact us