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