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.