Шаг 83 - Что такое События (Event) синхронизации

Смысл использования события в уведомлении одного или нескольких ожидающих потоков. События бывают двух типов:

  1. Сброс вручную
  2. Сбрасываются ожидаемыми функциями

Разница в том, что первый вид события нужно применять если событие ждут несколько потоков. Только сброс в ручную поволяет это сделать. Иначе первый же обработчик сбросит событие и другие потоки об этом не узнают. Реализуется это так. Объявляется переменная события типа HANDLE. Для создания события используется функция CreateEvent(), для доступа OpenEvent(), для установки события две функции SetEvent() и PulseEvent(). Для сброса события используется функция ResetEvent(). Дескриптор события после окончания работы нужно закрыть. Объект событие может находиться в двух состояниях - занят и свободен. Картинка ниже показывает смысл события с ручным сбросом.

83_1.gif (2683 b)

А вот, что будет с автоматическим сбросом в той же самой ситуации.

83_2.gif (2601 b)


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 2.05.2001