Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

События со сбросом вручную



Читайте также:
  1. Астрономические события
  2. Богинь пробуждают люди и события
  3. Богов активизируют люди и события
  4. В рамках этого направления (реализуя это направление, оно проявилось в следующих делах, событиях, мероприятиях, реформах)
  5. Глава 15. Взгляды других людей на грядущие события.
  6. Глава 6 . Предназначение России? В грядущих мировых событиях.
  7. Главные события в роли

События этого типа автоматически не переустанавливаются в занятое состояние функциями WaitForSingleObject и WaitForMultipleObjects. В случае объектов mutex, когда поток вызывает WaitForSingleObject или WaitForMultipleObjects, функция автоматически переводит mutex в занятое состояние и ждет его освобождения. Это гарантирует, что только один поток, ожидающий объект mutex, получит его в свое распоряжение и сможет продолжить исполнение кода. Если бы сами потоки отвечали за возврат mutex в занятое состояние, то объект могли бы захватить два и более потоков - прежде чем один из них успел бы сбросить его состояние.

Иначе обстоит дело в отношении событий со сбросом вручную. Может быть несколько потоков, ждущих возникновения одного события. Когда оно происходит, каждый из ожидавших потоков получает возможность выполнить свои операции. Допустим, один поток отвечает за считывание данных из файла в буфер. После того, как данные считаны, запускаются еще девять других потоков. Каждый из них обрабатывает данные по-своему. Предположим, в файле находится документ, созданный каким-нибудь текстовым процессором. Тогда пусть первый поток подсчитывает символы, второй - слова, третий - страницы, четвертый проверяет орфографию, пятый печатает документ и т.п. Общим у всех потоков является то, что ни один из них ничего не записывает в файл, т. е. данные для них - ресурс, открытый только для чтения.

Очевидно, что по возникновении события все ожидающие потоки должны возобновить исполнение. Этот пример и является одним из случаев применения событий со сбросом вручную. Когда объект "событие со сбросом вручную" переходит в свободное состояние, система разрешает исполнение всех потоков, его ожидавших. Поток переводит объект "событие" в свободное состояние вызовом функции SetEvent:

 


Дата добавления: 2015-07-11; просмотров: 51 | Нарушение авторских прав






mybiblioteka.su - 2015-2024 год. (0.005 сек.)