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


Функция LeaveCriticalSection (synchapi.h)

Освобождает владельца указанного объекта критического раздела.

Синтаксис

void LeaveCriticalSection(
  [in, out] LPCRITICAL_SECTION lpCriticalSection
);

Параметры

[in, out] lpCriticalSection

Указатель на объект критического раздела.

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

None

Remarks

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

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

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

LeaveCriticalSection не обращается к указанной CRITICAL_SECTION структуре после освобождения владения объектом критического раздела.

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

Примеры

Пример использования LeaveCriticalSection см. в разделе Использование объектов критического раздела.

Требования

Требование Значение
Минимальная версия клиента Windows XP [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2003 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header synchapi.h (включает Windows.h в Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

Объекты критического раздела

DeleteCriticalSection

EnterCriticalSection

InitializeCriticalSection

InitializeCriticalSectionAndSpinCount

Функции синхронизации

TryEnterCriticalSection

API-интерфейсы Vertdll, доступные в анклавах VBS