Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Не допускающий повторные входы мьютекс, который явно учитывает среду выполнения с параллелизмом.
Синтаксис
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();