Класс critical_sectioncritical_section Class

Не допускающий повторные входы мьютекс, который явно учитывает среду выполнения с параллелизмом.A non-reentrant mutex which is explicitly aware of the Concurrency Runtime.

СинтаксисSyntax

class critical_section;

ЧленыMembers

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

ИмяName ОписаниеDescription
native_handle_type Ссылка на объект critical_section.A reference to a critical_section object.

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

ИмяName ОписаниеDescription
Класс critical_section::scoped_lockcritical_section::scoped_lock Class Защищенная от исключения оболочка RAII для critical_section объекта.An exception safe RAII wrapper for a critical_section object.

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

nameName ОписаниеDescription
critical_sectioncritical_section Конструирует новую критическую секцию.Constructs a new critical section.
Деструктор ~ critical_section~critical_section Destructor Уничтожает критическую секцию.Destroys a critical section.

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

nameName ОписаниеDescription
locklock Получает этот критический раздел.Acquires this critical section.
native_handlenative_handle Возвращает собственный машинный код, зависящий от платформы, если он существует.Returns a platform specific native handle, if one exists.
try_locktry_lock Пытается получить блокировку без блокировки.Tries to acquire the lock without blocking.
try_lock_fortry_lock_for Пытается получить блокировку без блокировки в течение указанного числа миллисекунд.Tries to acquire the lock without blocking for a specific number of milliseconds.
блокированunlock Разблокирует критическую секцию.Unlocks the critical section.

КомментарииRemarks

Дополнительные сведения см. в разделе структуры данных синхронизации.For more information, see Synchronization Data Structures.

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

critical_section

ТребованияRequirements

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

Пространство имен: параллелизмNamespace: concurrency

critical_sectioncritical_section

Конструирует новую критическую секцию.Constructs a new critical section.

critical_section();

~ critical_section~critical_section

Уничтожает критическую секцию.Destroys a critical section.

~critical_section();

КомментарииRemarks

Ожидается, что блокировка больше не удерживается при выполнении деструктора.It is expected that the lock is no longer held when the destructor runs. Разрешение критической секции, уничтожения с блокировкой, по-прежнему приводит к неопределенному поведению.Allowing the critical section to destruct with the lock still held results in undefined behavior.

скрытьlock

Получает этот критический раздел.Acquires this critical section.

void lock();

КомментарииRemarks

Часто безопаснее использовать конструкцию scoped_lock для получения и освобождения critical_section объекта в безопасном для исключения виде.It is often safer to utilize the scoped_lock construct to acquire and release a critical_section object in an exception safe way.

Если блокировка уже удерживается вызывающим контекстом, будет выдано исключение improper_lock .If the lock is already held by the calling context, an improper_lock exception will be thrown.

native_handlenative_handle

Возвращает собственный машинный код, зависящий от платформы, если он существует.Returns a platform specific native handle, if one exists.

native_handle_type native_handle();

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

Ссылка на критическую секцию.A reference to the critical section.

КомментарииRemarks

critical_sectionОбъект не связан с платформой машинного кода, зависящей от платформы, для операционной системы Windows.A critical_section object is not associated with a platform specific native handle for the Windows operating system. Метод просто возвращает ссылку на сам объект.The method simply returns a reference to the object itself.

Класс critical_section:: scoped_lockcritical_section::scoped_lock Class

Защищенная от исключения оболочка RAII для critical_section объекта.An exception safe RAII wrapper for a critical_section object.

class scoped_lock;

scoped_lock:: scoped_lockscoped_lock::scoped_lock

Создает scoped_lock объект и получает critical_section объект, переданный в _Critical_section параметре.Constructs a scoped_lock object and acquires the critical_section object passed in the _Critical_section parameter. Если критическая секция удерживается другим потоком, этот вызов блокируется.If the critical section is held by another thread, this call will block.

explicit _CRTIMP scoped_lock(critical_section& _Critical_section);

ПараметрыParameters

_Critical_section_Critical_section
Критическая секция для блокировки.The critical section to lock.

scoped_lock:: ~ scoped_lockscoped_lock::~scoped_lock

Уничтожает scoped_lock объект и освобождает критическую секцию, заданную в его конструкторе.Destroys a scoped_lock object and releases the critical section supplied in its constructor.

~scoped_lock();

try_locktry_lock

Пытается получить блокировку без блокировки.Tries to acquire the lock without blocking.

bool try_lock();

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

Значение, если блокировка была получена; в true противном случае — значение false .If the lock was acquired, the value true; otherwise, the value false.

try_lock_fortry_lock_for

Пытается получить блокировку без блокировки в течение указанного числа миллисекунд.Tries to acquire the lock without blocking for a specific number of milliseconds.

bool try_lock_for(unsigned int _Timeout);

ПараметрыParameters

_Timeout_Timeout
Количество миллисекунд перед истечением времени ожидания.The number of milliseconds to wait before timing out.

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

Значение, если блокировка была получена; в true противном случае — значение false .If the lock was acquired, the value true; otherwise, the value false.

блокированunlock

Разблокирует критическую секцию.Unlocks the critical section.

void unlock();

См. также разделSee also

Пространство имен Concurrencyconcurrency Namespace
Класс reader_writer_lockreader_writer_lock Class