Поделиться через


<mutex> функции и переменные

adopt_lock

Представляет объект, который можно передать в конструкторы для lock_guard и unique_lock, чтобы указать на блокировку объекта мьютекса, также передаваемого в конструктор.

const adopt_lock_t adopt_lock;

call_once

Предоставляет механизм для однократного вызова указанного объекта во время выполнения.

template <class Callable, class... Args>
void call_once(once_flag& Flag,
    Callable F&&, Args&&... A);

Параметры

Параметр
Объект once_flag, который гарантирует, что вызываемый объект вызывается только один раз.

F
Вызываемый объект.

Объект
Список аргументов.

Замечания

Если флаг недопустим, функция создает system_error с кодом invalid_argumentошибки. В противном случае функция шаблона использует его аргумент Flag , чтобы убедиться, что он успешно вызывается F(A...) ровно один раз, независимо от того, сколько раз вызывается функция шаблона. Если F(A...) завершает работу, создавая исключение, вызов считается неуспешным.

defer_lock

Представляет объект, который может быть передан в конструктор для unique_lock. Это означает, что конструктор не должен блокировать объект мьютекса, который также ему передается.

const defer_lock_t defer_lock;

lock

Пытается заблокировать все аргументы без взаимоблокировки.

template <class L1, class L2, class... L3>
void lock(L1&, L2&, L3&...);

Замечания

Аргументы функции-шаблона должны быть типа мьютекс, за исключением того, что при вызове try_lock могут вызываться исключения.

Функция блокирует все свои аргументы без взаимоблокировки путем вызовов lock, try_lock, и unlock. Если вызов lock или try_lock приводит к исключению, функция вызывает unlock для любых объектов-мьютексов, которые были успешно заблокированы до повторного создания исключения.

swap

template <class Mutex>
void swap(unique_lock<Mutex>& x, unique_lock<Mutex>& y) noexcept;

try_lock

template <class L1, class L2, class... L3> int try_lock(L1&, L2&, L3&...);

try_to_lock

Представляет объект, который можно передать в конструктор для unique_lock, чтобы указать, что конструктор должен попытаться разблокировать объект mutex, который также передается в него, без блокировки.

const try_to_lock_t try_to_lock;