Events
1. Глобальные события
* запуск программы * сигнал * необработанное исключение
2. Контекстные события
работа с сервисами ОС. При их поступлении возобновляется контекст, в котором были определены условия для этого события - например, открыт канал в некотором контексте выполнения, и события о поступлении данных и изменении состояния этого канала должны обрабатываться в этом же контексте.
3. Производные события.
Определяются особым образом на основе событий, которые должны возникать при работе с используемыми ресурсами.
а) отсутствие событий в течении некоторого времени б) отклонение от заданной последовательности событий
Производные события
1. Нарушение очерёдности. Порядок - последовательность, в каждом шаге которой указываются событие или события, которые могут наступить. Если событий разрешено несколько, для каждого варианта события (или для группы этих событий) необходимо указание ветви очерёдности дальнейших событий, которая выбирается в соответствии с наступившим событием. При наступлении события, не предусмотренного порядком, также может быть указана отдельная ветвь дальнейшего наблюдения. По сути "незапланированные события" также участвуют в порядке, но с признаком "создать событие о нарушении порядка". Порядок может задаваться в виде фиксированного списка, или же быть подгружаемой пользовательской функции-continuation, в которую передаются наступившие события и в ответ она отдаёт производное событие (или его отсутствие). При необходимости определения временных соотношений эта функция должна устанавливать таймеры сама. Установка соотношений событий возможна в пределах одного контекста.
2. Временные соотношения. а) Отсутствие события (или событий из определённого набора) в течение заданного интервала времени. Имитация таймера - задать в качестве ожидаемого события само генерируемое по отсутствию событий событие. Если включить вместе с другими событиями в группу - это событие будет периодически создаваться при отсутствии других событий. б) Интервал между событием из группы А и событием из группы Б меньше заданного предела. Если событие включить сразу в обе группы, получим ограничение по частоте следования этого события (если повторилось слишком быстро, создаётся производное событие) в) Наступление в течение заданного периода событий из каждой из заданных групп А1..Аn. Возможные более сложные условия для каждой группы: ни одного события, 1, n событий (n<=len(Ai)).