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


Класс critical_section

Не допускающий повторные входы мьютекс, который явно учитывает среду выполнения с параллелизмом.

Синтаксис

class critical_section;

Участники

Общедоступные определения типов

Имя Описание
native_handle_type Ссылка на объект critical_section.

Открытые классы

Имя Описание
класс critical_section::scoped_lock Исключение безопасной оболочки critical_section RAII для объекта.

Открытые конструкторы

Имя Описание
critical_section Создает новый критический раздел.
Деструктор ~critical_section Уничтожает критически важный раздел.

Открытые методы

Имя Описание
lock Получает этот критически важный раздел.
native_handle Возвращает собственный дескриптор платформы, если он существует.
try_lock Пытается получить блокировку без блокировки.
try_lock_for Пытается получить блокировку без блокировки в течение указанного числа миллисекунд.
unlock Разблокирует критически важный раздел.

Замечания

Дополнительные сведения см. в разделе "Структуры данных синхронизации".

Иерархия наследования

critical_section

Требования

Заголовок: concrt.h

Пространство имен: concurrency

critical_section

Создает новый критический раздел.

critical_section();

~critical_section

Уничтожает критически важный раздел.

~critical_section();

Замечания

Ожидается, что блокировка больше не хранится при запуске деструктора. Разрешение критического раздела деструкция с блокировкой по-прежнему содержит результаты в неопределенном поведении.

lock

Получает этот критически важный раздел.

void lock();

Замечания

Часто безопаснее использовать конструкцию scoped_lock для получения и освобождения critical_section объекта в безопасном режиме.

Если блокировка уже хранится в контексте вызова, создается исключение improper_lock .

native_handle

Возвращает собственный дескриптор платформы, если он существует.

native_handle_type native_handle();

Возвращаемое значение

Ссылка на критически важный раздел.

Замечания

critical_section Объект не связан с конкретным собственным дескриптором платформы для операционной системы Windows. Метод просто возвращает ссылку на сам объект.

класс critical_section::scoped_lock

Исключение безопасной оболочки critical_section RAII для объекта.

class scoped_lock;

scoped_lock::scoped_lock

scoped_lock Создает объект и получает объект, переданный critical_section _Critical_section в параметре. Если критически важный раздел хранится другим потоком, этот вызов блокируется.

explicit _CRTIMP scoped_lock(critical_section& _Critical_section);

Параметры

_Critical_section
Критически важный раздел для блокировки.

scoped_lock::~scoped_lock

Уничтожает объект и освобождает критически важный раздел, предоставленный scoped_lock в его конструкторе.

~scoped_lock();

try_lock

Пытается получить блокировку без блокировки.

bool try_lock();

Возвращаемое значение

Если блокировка была приобретена, значение true; в противном случае — значение false.

try_lock_for

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

bool try_lock_for(unsigned int _Timeout);

Параметры

_Времени ожидания
Количество миллисекунд перед истечением времени ожидания.

Возвращаемое значение

Если блокировка была приобретена, значение true; в противном случае — значение false.

разблокировано

Разблокирует критически важный раздел.

void unlock();

См. также

Пространство имен concurrency
Класс reader_writer_lock