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


Класс critical_section

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

Синтаксис

class critical_section;

Участники

Общедоступные typedefы

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

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

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

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

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

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

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

Замечания

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

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

critical_section

Требования

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

Пространство имен: конкурентность

критическая секция

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

critical_section();

~критическая_секция

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

~critical_section();

Замечания

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

замок

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

void lock();

Замечания

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

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

native_handle

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

native_handle_type native_handle();

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

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

Замечания

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

класс critical_section::scoped_lock

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

class scoped_lock;

scoped_lock::scoped_lock

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

explicit _CRTIMP scoped_lock(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();

См. также

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