Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

События. Событие ( event ) - это флаг общего доступа для нескольких по­токов



Событие (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; Прочитано: 183 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...