![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Событие (event) - это флаг общего доступа для нескольких потоков. Существует несколько типов событий, каждый из которых предназначен для конкретной цели. Событие находится в сигнальном состоянии в случае, если соответствующий флаг установлен.
События могут быть мануальными (manual) и единичными (single), соответственно оповещающие о том что событие произошло либо множество потоков сразу, либо единственный поток, после чего событие сбрасывается системой автоматически. Тип события указывается при его создании.
Для работы с событиями используются следующие функции:
CreateEvent - создает событие или открывает уже существующее событие;
OpenEvent - открывает существующее событие;
SetEvent - устанавливает событие (переводит его в сигнальное состояние);
ResetEvent - сбрасывает событие;
PulseEvent - переводит событие в сигнальное состояние на период времени, пока на это событие не прореагируют все ожидающие его потоки; после чего событие сбрасывается.
Эти функции имеют следующие параметры вызова.
HANDLE CreateEvent(
LPSECURITY_ATTRIBUTES IpSecurityAttributes, // атрибуты защиты
BOOL bManuaiReset, // тип события
BOOL blnitialState, // начальное состояние события
LPCTSTR lpName // имя события
);
BOOL SetEvent(
HANDLE hEvent // дескриптор события
);
BOOL ResetEvent(
HANDLE hEvent // дескриптор события
);
BOOL PuiseEvent(
HANDLE hEvent // дескриптор события
);
HANDLE OpenEvent(
DWORD dwDesiredAccess, // флаги доступа
BOOL blnheritHandle, // режим наследования
LPCTSTR lpName // имя события
);
Параметр dwDesiredAccess определяет доступ к событию и может быть равен любой логической комбинации следующих флагов:
EVENT_ALL_ACCESS – полный доступ (поток может выполнять над событием любые действия);
EVENT_MODIFY_STATE - модификация состояния (поток может использовать функции SetEvent и ResetEvent для изменения состояния события);
SYNCHRONIZE – синхронизация (поток может использовать событие в функциях ожидания).
Дата публикования: 2015-10-09; Прочитано: 193 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!