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


CriticalSection - класс

Представляет объект критического раздела.

Синтаксис

class CriticalSection;

Участники

Конструктор

Имя Описание
CriticalSection::CriticalSection Инициализирует объект синхронизации, аналогичный объекту мьютекса, но может использоваться только потоками одного процесса.
CriticalSection::~CriticalSection Деинициализирует и уничтожает текущий CriticalSection объект.

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

Имя Описание
CriticalSection::IsValid Указывает, является ли текущий критически важный раздел допустимым.
Критическоеsection::Lock Ожидает владения указанным объектом критического раздела. Функция возвращается, когда вызывающему потоку предоставлено владение.
CriticalSection::TryLock Пытается ввести критически важный раздел без блокировки. Если вызов выполнен успешно, вызывающий поток берет на себя ответственность за критически важный раздел.

Защищенные члены данных

Имя Описание
CriticalSection::cs_ Объявляет критически важный элемент данных раздела.

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

CriticalSection

Требования

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

Пространство имен: Microsoft::WRL::Оболочки

CriticalSection::~CriticalSection

Деинициализирует и уничтожает текущий CriticalSection объект.

WRL_NOTHROW ~CriticalSection();

CriticalSection::CriticalSection

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

explicit CriticalSection(
   ULONG spincount = 0
);

Параметры

spincount
Счетчик прокруток для объекта критической секции. Значение по умолчанию равно 0.

Замечания

Дополнительные сведения о критически важных разделах и спин-числах см InitializeCriticalSectionAndSpinCount . в разделе функции в Synchronization документации по API Windows.

CriticalSection::cs_

Объявляет критически важный элемент данных раздела.

CRITICAL_SECTION cs_;

Замечания

Эти данные-член защищены.

CriticalSection::IsValid

Указывает, является ли текущий критически важный раздел допустимым.

bool IsValid() const;

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

По умолчанию всегда возвращается true.

Критическоеsection::Lock

Ожидает владения указанным объектом критического раздела. Функция возвращается, когда вызывающему потоку предоставлено владение.

SyncLock Lock();

   static SyncLock Lock(
   _In_ CRITICAL_SECTION* cs
);

Параметры

cs
Определенный пользователем объект критической секции.

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

Объект блокировки, который можно использовать, чтобы разблокировать текущую критическую секцию.

Замечания

Первая функция Lock влияет на текущий объект критической секции. Вторая функция Lock влияет на указанную пользователем критическую секцию.

CriticalSection::TryLock

Пытается ввести критически важный раздел без блокировки. Если вызов выполнен успешно, вызывающий поток берет на себя ответственность за критически важный раздел.

SyncLock TryLock();

static SyncLock TryLock(
   _In_ CRITICAL_SECTION* cs
);

Параметры

cs
Определенный пользователем объект критической секции.

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

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

Замечания

Первая функция TryLock влияет на текущий объект критической секции. Вторая функция TryLock влияет на указанную пользователем критическую секцию.