Mutexes
Concurrency
Collaboration diagram for Mutexes:

## Classes

struct | std::adopt_lock_t
struct | std::defer_lock_t
class | std::lock_guard< _Mutex >
class | std::mutex
struct | std::try_to_lock_t
class | std::unique_lock< _Mutex >

## Typedefs

typedef __gthread_mutex_t | std::__mutex_base::__native_type
typedef _Mutex | std::lock_guard< _Mutex >::mutex_type
typedef _Mutex | std::unique_lock< _Mutex >::mutex_type
typedef __native_type * | std::mutex::native_handle_type

## Functions

| std::__mutex_base::__mutex_base (const __mutex_base &)=delete
| std::lock_guard< _Mutex >::lock_guard (const lock_guard &)=delete
| std::lock_guard< _Mutex >::lock_guard (mutex_type &__m)
| std::lock_guard< _Mutex >::lock_guard (mutex_type &__m, adopt_lock_t) noexcept
| std::mutex::mutex (const mutex &)=delete
| std::unique_lock< _Mutex >::unique_lock (const unique_lock &)=delete
| std::unique_lock< _Mutex >::unique_lock (mutex_type &__m)
| std::unique_lock< _Mutex >::unique_lock (mutex_type &__m, adopt_lock_t) noexcept
template<typename _Rep , typename _Period >
| std::unique_lock< _Mutex >::unique_lock (mutex_type &__m, const chrono::duration< _Rep, _Period > &__rtime)
template<typename _Clock , typename _Duration >
| std::unique_lock< _Mutex >::unique_lock (mutex_type &__m, const chrono::time_point< _Clock, _Duration > &__atime)
| std::unique_lock< _Mutex >::unique_lock (mutex_type &__m, defer_lock_t) noexcept
| std::unique_lock< _Mutex >::unique_lock (mutex_type &__m, try_to_lock_t)
| std::unique_lock< _Mutex >::unique_lock (unique_lock &&__u) noexcept
void | std::mutex::lock ()
void | std::unique_lock< _Mutex >::lock ()
mutex_type * | std::unique_lock< _Mutex >::mutex () const noexcept
native_handle_type | std::mutex::native_handle () noexcept
| std::unique_lock< _Mutex >::operator bool () const noexcept
__mutex_base & | std::__mutex_base::operator= (const __mutex_base &)=delete
lock_guard & | std::lock_guard< _Mutex >::operator= (const lock_guard &)=delete
mutex & | std::mutex::operator= (const mutex &)=delete
unique_lock & | std::unique_lock< _Mutex >::operator= (const unique_lock &)=delete
unique_lock & | std::unique_lock< _Mutex >::operator= (unique_lock &&__u) noexcept
bool | std::unique_lock< _Mutex >::owns_lock () const noexcept
mutex_type * | std::unique_lock< _Mutex >::release () noexcept
void | std::unique_lock< _Mutex >::swap (unique_lock &__u) noexcept
template<typename _Mutex >
void | std::swap (unique_lock< _Mutex > &__x, unique_lock< _Mutex > &__y) noexcept
bool | std::unique_lock< _Mutex >::try_lock ()
bool | std::mutex::try_lock () noexcept
template<typename _Rep , typename _Period >
bool | std::unique_lock< _Mutex >::try_lock_for (const chrono::duration< _Rep, _Period > &__rtime)
template<typename _Clock , typename _Duration >
bool | std::unique_lock< _Mutex >::try_lock_until (const chrono::time_point< _Clock, _Duration > &__atime)
void | std::mutex::unlock ()
void | std::unique_lock< _Mutex >::unlock ()

## Variables

__native_type | std::__mutex_base::_M_mutex
constexpr _GLIBCXX17_INLINE adopt_lock_t | std::adopt_lock
constexpr _GLIBCXX17_INLINE defer_lock_t | std::defer_lock
constexpr _GLIBCXX17_INLINE try_to_lock_t | std::try_to_lock
using | std::__shared_timed_mutex_base = __shared_mutex_cv
template<typename _Mutex >
void | std::swap (shared_lock< _Mutex > &__x, shared_lock< _Mutex > &__y) noexcept
#define | __cpp_lib_shared_timed_mutex

## Detailed Description

Classes for mutex support.

## Macro Definition Documentation

## __cpp_lib_shared_timed_mutex

#define __cpp_lib_shared_timed_mutex

Swap specialization for shared_lock.

Definition at line 57 of file shared_mutex.

## Typedef Documentation

## __shared_timed_mutex_base

using std::__shared_timed_mutex_base = typedef __shared_mutex_cv

Swap specialization for shared_lock.

Definition at line 355 of file shared_mutex.

## Function Documentation

## swap() [1/2]

template<typename _Mutex >

void std::swap | ( | shared_lock< _Mutex > & | __x,
|  | shared_lock< _Mutex > & | __y
| ) |  |

noexcept

Swap specialization for shared_lock.

Definition at line 676 of file shared_mutex.

## swap() [2/2]

template<typename _Mutex >

void std::swap | ( | unique_lock< _Mutex > & | __x,
|  | unique_lock< _Mutex > & | __y
| ) |  |

inline noexcept

Swap overload for unique_lock objects.

Definition at line 363 of file std_mutex.h.

## Variable Documentation

## adopt_lock

constexpr _GLIBCXX17_INLINE adopt_lock_t std::adopt_lock

constexpr

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

Definition at line 148 of file std_mutex.h.

## defer_lock

constexpr _GLIBCXX17_INLINE defer_lock_t std::defer_lock

constexpr

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

Definition at line 142 of file std_mutex.h.

## try_to_lock

constexpr _GLIBCXX17_INLINE try_to_lock_t std::try_to_lock

constexpr

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

Definition at line 145 of file std_mutex.h.