Обзор: четыре модели использования событий

Обзор: четыре модели использования событий

Комбинирование автоматически сбрасываемых и сбрасываемых вручную событий с функциями SetEvent и PulseEvent приводит к четырем различным способам использования событий. Каждая из четырех комбинаций уникальна и каждая из них оказывается полезной или даже необходимой в той или иной ситуации, так что все они будет соответствующим образом использованы в примерах и упражнениях, приведенных в этой и следующей главах.

Предостережение

Некорректное использование событий может привести к возникновению условий состязаний, взаимоблокировок и других тонких, трудно обнаруживаемых ошибок. В главе 10 описываются методики, применение которых является обязательным почти во всех случаях использования событий, за исключением самых тривиальных.

В табл. 8.1 описаны четыре возможные ситуации.

Таблица 8.1. Сводная таблица свойств событий 

Автоматически сбрасываемые события Сбрасываемые вручную события
SetEvent Освобождается строго один поток. Если в этот момент ни один из потоков не ожидает наступления события, то поток, который первым перейдет в состояние ожидания следующих событий, будет сразу же освобожден. После этого событие немедленно автоматически сбрасывается. Освобождаются все потоки, которые в настоящее время ожидают наступления события. Событие остается в сигнальном состоянии до тех пор, пока не будет сброшено каким-либо потоком.
PulseEvent Освобождается строго один поток, но только в том случае, если имеется поток, ожидающий наступления события. Освобождаются все потоки, которые в этот момент ожидают наступления события, если таковые имеются, после чего событие сбрасывается и переходит в несигнальное состояние. 

Образно говоря, автоматически сбрасываемое событие — это дверь, снабженная пружиной, которая обеспечивает автоматическое закрытие двери, в то время как вручную сбрасываемое событие можно уподобить двери, в которой пружина отсутствует и которая, будучи раз открытой, продолжает оставаться в таком состоянии. Используя эту метафору, можно сказать, что функция PulseEvent открывает дверь и закрывает ее сразу же после того, как через нее проходят одна (автоматически сбрасываемые события) или все (вручную сбрасываемые события) ожидающие потоки. Функция SetEvent открывает дверь и освобождает ее.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Четыре основных свойства

Из книги Люди как нелинейные и наиболее важные компоненты в создании программного обеспечения автора Коуберн Алистэр


Глава 4. Четыре переменные

Из книги Экстремальное программирование автора Бек Кент

Глава 4. Четыре переменные В наших проектах мы пытаемся контролировать четыре переменные – затраты, время, качество и объем работ. Из всех этих переменных наиболее удобной для контроля является объем работ.В данной главе я расскажу вам о модели разработки программного


Глава 7. Четыре ценности

Из книги Журнал `Компьютерра` №721 автора Журнал «Компьютерра»

Глава 7. Четыре ценности Мы сможем успешно решить стоящую перед нами проблему, если сформулируем стиль, который направлен на прославление каждой из согласующегося набора ценностей, которые служат как человеческим, так и коммерческим требованиям: коммуникация, простота,


ОГОРОД КОЗЛОВСКОГО: Четыре мега за четыре гига

Из книги Все под контролем: Кто и как следит за тобой автора Гарфинкель Симеон

ОГОРОД КОЗЛОВСКОГО: Четыре мега за четыре гига Автор: Козловский ЕвгенийЗаканчивая прошлый "Огород", "Убивца", я пообещал детектив. Выполняю обещание.Итак, набив до отказа привычными программами описанный в "Убивце" x600, я начал с ним жить. Жизнь была нормальная, к


Тридцать четыре года спустя

Из книги Модель зрелости процессов разработки программного обеспечения автора Паулк Марк

Тридцать четыре года спустя Сиэтл, 1999. Я заказал две порции кофе с молоком и белым шоколадом и протянул бармену в качестве оплаты карточку Mileage Plus First Card. Несмотря на то что напитки стоили всего по 3 доллара каждый, я предпочел заплатить комиссию за транзакцию вместо


1.3. Обзор модели зрелости процессов разработки

Из книги Журнал "Компьютерра" №771 автора Журнал «Компьютерра»

1.3. Обзор модели зрелости процессов разработки Хотя зачастую инженеры-разработчики и менеджеры хорошо осведомлены о своих проблемах, их взгляды на то, какие усовершенствования являются наиболее важными, могут быть различными. Без организованной стратегии


ГОЛУБЯТНЯ: Четыре Жэ в кумаре

Из книги Интернет-разведка [Руководство к действию] автора Ющук Евгений Леонидович

ГОЛУБЯТНЯ: Четыре Жэ в кумаре Автор: Сергей ГолубицкийВ "Плановом снижении градуса" старый пень проговорился: помянул в контексте настроек GPRS мобильного оператора IDEA HTC Max 4G! А ведь так хотелось, чтобы вышло сюрпризом! Ну коли не срослось, расколюсь ранее положенного


ОГОРОД КОЗЛОВСКОГО: По четыре

Из книги Феномен науки. Кибернетический подход к эволюции автора Турчин Валентин Фёдорович

ОГОРОД КОЗЛОВСКОГО: По четыре Автор: Козловский ЕвгенийИтак, продолжаю (почти заканчиваю) свою историю с полным переходом на Высокую Четкость. Я уже рассказывал про то, что, во-первых, мой референсный многоканальный усилитель VSA-AX10Ai от Pioneer, купленный в более тучные


Четыре типа невидимости в Интернете

Из книги Цифровой журнал «Компьютерра» № 84 [29.08.2011 — 04.09.2011] автора Журнал «Компьютерра»

Четыре типа невидимости в Интернете Традиционно выделяют четыре типа невидимости содержимого Всемирной Паутины, сформулирванные Крисом Шерманом и Гэри Прайсом.1. Невидимость, обусловленная настройками пауков и их естественными особенностями (так называемый, «серый


Четыре видеорегистратора Олег Нечай

Из книги Практика и проблематика моделирования бизнес-процессов автора Всяких Е И

Четыре видеорегистратора Олег Нечай Опубликовано 31 августа 2011 года Proline DVR-006 Один из самых популярных бюджетных видеорегистраторов, известный под самыми разными названиями, включая Proline DVR-006, или «Сова». Главная причина популярности —


Четыре мира программной разработки

Из книги MySQL: руководство профессионала автора Паутов Алексей В

Четыре мира программной разработки Из предшествующей дискуссии следует, что когда мы говорим об ОО-разработке, следует различать четыре отдельных мира:[x]. Моделируемую систему, - внешнюю по отношению к программной системе, описываемую типами объектов и их абстрактными


4.2. Создание модели данных на основе объектной модели с помощью ERwin Translation Wizard

Из книги автора

4.2. Создание модели данных на основе объектной модели с помощью ERwin Translation Wizard Rational Rose позволяет строить объектную модель, но не может построить качественную физическую модель данных. Для решения этой задачи фирмой PLATINUM technology выпущена утилита ERwin Translation Wizard, позволяющая


Глава 3 . Связывание модели процессов и модели данных

Из книги автора

Глава 3. Связывание модели процессов и модели данных 3.1. Модель данных и ее соответствие модели процессов Функциональная модель BPwin является основой для построения модели данных. Действительно, не имея информации о том, как работает предприятие, бессмысленно строить