В информатике , событие (также называется событие семафор ) представляет собой тип синхронизации механизма , который используется для указания процессов в ожидании , когда конкретное условие становится истинным.
Событие - это абстрактный тип данных с логическим состоянием и следующими операциями:
- wait - при выполнении вызывает приостановку выполняющегося процесса до тех пор, пока состояние события не станет истинным. Если состояние уже установлено в истинное значение до того, как было вызвано ожидание, ожидание не имеет никакого эффекта. [ требуется разъяснение ]
- set - устанавливает состояние события в true, освобождает все ожидающие процессы.
- clear - устанавливает состояние события в false.
Различные реализации событий могут предоставлять разные подмножества этих возможных операций; например, реализация, предоставляемая Microsoft Windows, предоставляет операции wait (WaitForObject и связанные функции), set (SetEvent) и clear (ResetEvent). Параметр, который может быть указан во время создания объекта события, изменяет поведение SetEvent таким образом, что освобождается только один поток, а состояние автоматически возвращается в значение false после освобождения этого потока.
События без функции сброса , то есть те, которые могут быть выполнены только один раз , называются фьючерсами . [1] Мониторы , с другой стороны, являются более общими, поскольку они объединяют сигнализацию о завершении с мьютексом и не позволяют производителю и потребителю выполняться одновременно в мониторе, что делает его разделом с критическим событием .
Рекомендации
- ^ 500 строк или меньше, «Веб-сканер с асинхронными сопрограммами» А. Джесси Джирью Дэвис и Гвидо ван Россум говорит, что «реализация использует asyncio.Event вместо показанного здесь будущего. Разница в том, что событие можно сбросить, тогда как Будущее не может перейти от решенного обратно к ожидающему ».
Внешние ссылки
- Объекты событий , Microsoft Developer Network
- Механизмы синхронизации потоков в Python