libstdc++
Collaboration diagram for Mutexes:

Macros

#define __cpp_lib_scoped_lock
 
#define __cpp_lib_shared_mutex
 
#define __cpp_lib_shared_timed_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 _Mutex >
void swap (shared_lock< _Mutex > &__x, shared_lock< _Mutex > &__y) noexcept
 
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
 

Detailed Description

Classes for mutex support.

Function Documentation

◆ 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 848 of file mutex.

◆ lock()

template<typename _L1 , typename _L2 , typename... _L3>
void std::lock ( _L1 &  __l1,
_L2 &  __l2,
_L3 &...  __l3 
)

Generic lock.

Parameters
__l1Meets Lockable requirements (try_lock() may throw).
__l2Meets Lockable requirements (try_lock() may throw).
__l3Meets Lockable requirements (try_lock() may throw).
Exceptions
Anexception 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 648 of file mutex.

References std::defer_lock, and std::try_lock().

◆ swap()

template<typename _Mutex >
void swap ( shared_lock< _Mutex > &  __x,
shared_lock< _Mutex > &  __y 
)
related

Swap specialization for shared_lock.

Definition at line 851 of file shared_mutex.

◆ try_lock()

template<typename _L1 , typename _L2 , typename... _L3>
int std::try_lock ( _L1 &  __l1,
_L2 &  __l2,
_L3 &...  __l3 
)
inline

Generic try_lock.

Parameters
__l1Meets Lockable requirements (try_lock() may throw).
__l2Meets Lockable requirements (try_lock() may throw).
__l3Meets 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 589 of file mutex.

Referenced by std::lock().

Variable Documentation

◆ adopt_lock

constexpr adopt_lock_t std::adopt_lock
inlineconstexpr

Tag used to make a scoped lock take ownership of a locked mutex.

Definition at line 215 of file std_mutex.h.

◆ defer_lock

constexpr defer_lock_t std::defer_lock
inlineconstexpr

Tag used to prevent a scoped lock from acquiring ownership of a mutex.

Definition at line 209 of file std_mutex.h.

Referenced by std::lock().

◆ try_to_lock

constexpr try_to_lock_t std::try_to_lock
inlineconstexpr

Tag used to prevent a scoped lock from blocking if a mutex is locked.

Definition at line 212 of file std_mutex.h.