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


<mutex>

Включите стандартный заголовок <mutex> для определения классов mutex, recursive_mutex, timed_mutex и recursive_timed_mutex; шаблоны lock_guard и unique_lock; а также вспомогательные типы и функции, которые определяют области кода взаимн- исключения.

Этот заголовок используется среда выполнения с параллелизмом (ConcRT), чтобы можно было использовать его вместе с другими механизмами ConcRT. Дополнительные сведения о ConcRT см. в разделе Среда выполнения с параллелизмом.

#include <mutex>

Заметки

Примечание

В коде, компилироваться с помощью /clr или /clr:pure, этот заголовок блокируется.

Классы mutex и recursive_mutexмьютекс типа. Тип мьютекс имеет конструктор по умолчанию и деструктор, не вызывает исключения. Эти объекты имеют методы, предоставляющие взаимное исключение, когда несколько потоков пытаются блокировать один и тот же объект. В частности, тип мьютекс содержит методы lock, try_lock и unlock:

  • Метод lock блокирует вызывающий поток до тех пор, пока поток не получит владение мьютекса. Ее возвращаемое значение игнорируется.

  • Метод try_lock пытается получить мьютекс владения без блокировки. Возвращаемым типом преобразуемым к bool и true если метод получает владение, но в противном случае false.

  • Выпуски метода unlock владение мьютекс из вызывающего потока.

Мьютекс типы можно использовать в качестве аргументов типа для создания шаблонов lock_guard и unique_lock. Можно использовать объекты этого типа в качестве аргумента Lock к функциям элемента ожидания в шаблоне condition_variable_any.

синхронизированный тип мьютексов удовлетворяет требованиям для типа мьютекса. Кроме того, он содержит методы try_lock_for и try_lock_until, которые должны быть можно вызвать с помощью одного аргумента и должен возвращать тип, преобразуемым к bool. Синхронизированный тип мьютекс может определить эти функции с помощью дополнительных аргументов, при условии, что эти дополнительные все аргументы имеют значения по умолчанию.

  • Метод try_lock_for должен быть можно вызвать с помощью одного аргумента, Rel_time, тип которого создание chrono::duration. Метод пытается получить мьютекс владельца, но возвращает за время, обозначено Rel_time независимо от успеха. Возвращаемое значение может быть преобразовано в значение true если метод получает владение; в противном случае возвращаемое значение может быть преобразовано в значение false.

  • Метод try_lock_until должен быть можно вызвать с помощью одного аргумента, Abs_time, тип которого создание chrono::time_point. Метод пытается получить мьютекс владельца, но не возвращает позже, чем время, обозначено Abs_time независимо от успеха. Возвращаемое значение может быть преобразовано в значение true если метод получает владение; в противном случае возвращаемое значение может быть преобразовано в значение false.

Тип мьютекс также как lockable тип. Если он не содержит функцию-член try_lock, это базовый тип lockable. Синхронизированный тип мьютекс также как синхронизированный lockable тип.

Классы

Name

Описание

Класс lock_guard

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

Класс mutex (STL)

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

Класс recursive_mutex

Представляет тип мьютекса. В constrast в класс mutex, расширения функциональности блокирован вызывать методы для объектов, которые уже блокированы четко.

Класс recursive_timed_mutex

Представляет синхронизированный тип мьютекса. Используйте объекты этого типа для обеспечения взаимное исключение, имеет ограниченную времени блокировки внутри программы. В отличие от объектов типа timed_mutex, эффект блокирован вызывать методы для объектов recursive_timed_mutex четок.

Класс timed_mutex

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

Класс unique_lock

Представляет шаблон, можно создать для создания объектов, управляющих блокировать и разблокировать mutex.

Функции

Name

Описание

Функция call_once

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

Функция lock

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

структурам;

Name

Описание

Структура adopt_lock_t

Представляет тип, используемый для определения adopt_lock.

Структура defer_lock_t

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

Структура once_flag

Представляет struct, используемый с шаблонной функции call_once, чтобы убедиться, что код инициализации вызывается только один раз, даже при наличии блокирующих нескольких потоков выполнения.

Структура try_to_lock_t

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

Переменные

Name

Описание

Переменная adopt_lock

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

Переменная defer_lock

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

Переменная try_to_lock

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

См. также

Другие ресурсы

Файлы заголовков стандартных библиотек C++