Расписание событий и моделируемое время
Действия с временными метками попадают в упорядоченное расписание и обрабатываются с самого раннего момента, в каком бы порядке их ни добавили.
Как моделирование может определять следующее действие, не следуя порядку планирования?
- Представление события как явных данных о времени и действии
- Вставка событий в порядке неубывания временных меток
- Сохранение порядка планирования для событий с одинаковым временем
- Накопление состояния путем первоочередной обработки самого раннего события
Процедура schedule обходит уже упорядоченное расписание до тех пор, пока новое время не окажется раньше текущего события. Одинаковые временные метки не удовлетворяют строгой проверке на неравенство, поэтому новое событие для этого времени вставляется после уже находящихся там событий. Возвращаемый список отражает как моделируемое время, так и порядок разрешения совпадений.
Процедура propagate извлекает самое раннее событие, применяет его числовое изменение к сигналу signal и записывает полученное состояние рядом со временем этого события. Расписание моделирует логическое время, а не ожидает физических часов, и эти примеры не моделируют физику одновременных событий за рамками явного правила вставки.
- Вывод
- —
- Значение
- —
- Диагностика
- —
Первая программа возвращает ((2 sense) (5 open) (5 close)). Вторая программа возвращает ((2 1) (4 4) (5 14)).
Проследите за сравнениями в процедуре schedule, пока каждое событие не займет позицию по своей временной метке. Затем наблюдайте, как propagate последовательно извлекает моменты времени 2, 4 и 5, пока signal принимает значения 1, 4 и 14. Эти трассы описывают только данное расписание и его явное правило для одинаковых меток времени.
Измените программу и сравните результат.
Запланируйте событие с именем reset на момент времени 1 в первой программе. Предскажите его позицию без изменения правила вставки.
Показать подсказку
Новая временная метка меньше времени любого события, уже находящегося в расписании.