![](/user_photo/2706_HbeT2.jpg)
- •Процессы, нити и волокна
- •CrProces.C
- •Int apientry WinMain( hinstance hInstance, hinstance hPrevInstance,
- •Объекты синхронизации
- •Защита процесса от нереентрабельного кода
- •Описание функций управления процессами, нитями и волокнами
- •CreateEvent
- •CrEvent.C
- •Int apientry WinMain( hinstance hInstance, hinstance hPrevInstance,
- •CreateMutex
- •CrMutex.C
- •Int apientry WinMain( hinstance hInstance, hinstance hPrevInstance,
- •CreateSemaphore
- •CrSem.C
- •Int apientry WinMain( hinstance hInstance, hinstance hPrevInstance,
- •CreateThread
- •EnterCriticalSection
- •EntCrSec.C
- •Int apientry WinMain( hinstance hInstance, hinstance hPrevInstance,
- •ExitThread
- •InitializeCriticalSection
- •DeleteCriticalSection
- •LeaveCriticalSection
- •OpenSemaphore
- •TryEnterCriticalSection
- •WaitForMultipleObjects
ExitThread
Описание Функция ExitThread завершает нить. Это наиболее предпочтительный способ завершения нити. Когда эта функция вызывается явным образом либо при возврате из процедуры нити, стек текущей нити освобождается и выполнение нити завершается. После завершения нити состояние объекта нити становится сигнальным. Кроме того, состояние завершения, возвращаемое функцией GetExitCodeThread, изменяется со STILL_ACTIVE на код завершения, определенный параметром uExitCode. Завершение нити не оказывает влияния на порожденные процессы, которые она запускает. Нить не удаляется из системы до тех пор, пока не закроются все ее дескрипторы.
Синтаксис VOID ExitThread(DWORD uExitCode)
Параметры uExitCode DWORD: Код завершения вызывающей нити. Для выборки кода завершения нити применяется GetExitCodeThread.
Включаемый файл winbase.h
См. также GetExitCodeThread, GetExitCodeProcess, ExitProcess,CloseHandle.
InitializeCriticalSection
Описание Функция InitializeCriticalSection устанавливает объект критического участка кода. Эта функция должна вызываться перед выполнением функции EnterCriticalSection. Объект критического участка кода можно использовать для синхронизации нитей одного процесса методом взаимного исключения. Для выделения памяти, используемой объектом критического участка кода, в отвечающем за это процессе потребуется объявить переменную типа CRITICAL_SECTION. После инициализации критического участка кода применяются функции EnterCriticalSection, TryEnterCriticalSection и LeaveCriticalSection.
Синтаксис VOID InitializeCriticalSection (LPCRITICAL_SECTION lpCriticalSection)
Параметры lpCriticalSection LPCRITICAL_SECTION: Указатель на инициализируемый объект критического участка кода.
Включаемый файл winbase.h
См. также EnterCriticalSection, LeaveCriticalSection, TryEnterCriticalSection, DeleteCriticalSection.
Пример См. пример применения функции EnterCriticalSection.
DeleteCriticalSection
Описание Функция DeleteCriticalSection освобождает все ресурсы, связанные с объектом критического участка кода, который не принадлежит данному процессу. После удаления объекта критического участка кода функции EnterCriticalSection, TryEnterCriticalSection и LeaveCriticalSection не смогут обратиться к уже удаленному объекту.
Синтаксис VOID DeleteCriticalSection(LPCRITICAL_SECTION lpcsCriticalSection)
Параметры lpcsCriticalSection LPCRITICAL_SECTION: Указатель на удаляемый объект критического участка кода.
Включаемый файл winbase.h
См. также EnterCriticalSection, LeaveCriticalSection, InitializeCriticalSection, TryEnterCriticalSection.
Пример См. пример применения функции EnterCriticalSection.
LeaveCriticalSection
Описание Функция LeaveCriticalSection уступает права владения объектом критического участка кода. Права владения должны быть отданы в результате вызова функции LeaveCriticalSection столько раз, сколько владеющая ими нить применяет функцию EnterCriticalSection к тому же самому объекту.
Синтаксис VOID LeaveCriticalSection(LPCRITICAL_SECTION lpcsCriticalSection)
Параметры lpcsCriticalSection LPCRITICAL_SECTION: Указатель на объект критического участка кода, используемый при вызове, соответственно, функции EnterCriticalSection или TryEnterCriticalSection.
Включаемый файл winbase.h
См. также CreateMutex, DeleteCriticalSection, InitializeCriticalSection, EnterCriticalSection, TryEnterCriticalSection.
Пример См. пример применения функции EnterCriticalSection.