Функция 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 |