libstdc++: Mutexes (original) (raw)
Classes | |
---|---|
struct | std::adopt_lock_t |
struct | std::defer_lock_t |
class | std::lock_guard< _Mutex > |
class | std::mutex |
struct | std::once_flag |
class | std::recursive_mutex |
class | std::recursive_timed_mutex |
class | std::shared_lock< _Mutex > |
class | std::shared_timed_mutex |
class | std::timed_mutex |
struct | std::try_to_lock_t |
class | std::unique_lock< _Mutex > |
Functions | |
---|---|
void | std::__once_proxy (void) |
template<typename _Callable , typename... _Args> | |
void | std::call_once (once_flag &__once, _Callable &&__f, _Args &&... __args) |
template<typename _L1 , typename _L2 , typename... _L3> | |
void | std::lock (_L1 &__l1, _L2 &__l2, _L3 &... __l3) |
template<typename _L1 , typename _L2 , typename... _L3> | |
int | std::try_lock (_L1 &__l1, _L2 &__l2, _L3 &... __l3) |
Variables | |
---|---|
constexpr adopt_lock_t | std::adopt_lock |
constexpr defer_lock_t | std::defer_lock |
constexpr try_to_lock_t | std::try_to_lock |
Classes for mutex support.
◆ call_once()
template<typename _Callable , typename... _Args>
void std::call_once | ( | once_flag & | __once, |
---|---|---|---|
_Callable && | __f, | ||
_Args &&... | __args | ||
) |
Invoke a callable and synchronize with other calls using the same flag.
Definition at line 905 of file mutex.
◆ lock()
template<typename _L1 , typename _L2 , typename... _L3>
void std::lock | ( | _L1 & | __l1, |
---|---|---|---|
_L2 & | __l2, | ||
_L3 &... | __l3 | ||
) |
Generic lock.
Parameters
__l1 | Meets Lockable requirements (try_lock() may throw). |
---|---|
__l2 | Meets Lockable requirements (try_lock() may throw). |
__l3 | Meets Lockable requirements (try_lock() may throw). |
Exceptions
An | exception thrown by an argument's lock() or try_lock() member. |
---|
Postcondition
All arguments are locked.
All arguments are locked via a sequence of calls to lock(), try_lock() and unlock(). If this function exits via an exception any locks that were obtained will be released.
Definition at line 698 of file mutex.
References std::defer_lock, and std::try_lock().
◆ try_lock()
template<typename _L1 , typename _L2 , typename... _L3>
int std::try_lock ( _L1 & __l1, _L2 & __l2, _L3 &... __l3 ) | inline |
---|
Generic try_lock.
Parameters
__l1 | Meets Lockable requirements (try_lock() may throw). |
---|---|
__l2 | Meets Lockable requirements (try_lock() may throw). |
__l3 | Meets Lockable requirements (try_lock() may throw). |
Returns
Returns -1 if all try_lock() calls return true. Otherwise returns a 0-based index corresponding to the argument that returned false.
Postcondition
Either all arguments are locked, or none will be.
Sequentially calls try_lock() on each argument.
Definition at line 639 of file mutex.
Referenced by std::lock().
◆ adopt_lock
Tag used to make a scoped lock take ownership of a locked mutex.
Definition at line 232 of file std_mutex.h.
◆ defer_lock
Tag used to prevent a scoped lock from acquiring ownership of a mutex.
Definition at line 226 of file std_mutex.h.
Referenced by std::lock().
◆ try_to_lock
Tag used to prevent a scoped lock from blocking if a mutex is locked.
Definition at line 229 of file std_mutex.h.