Класс 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();