2. Интерпретатор прерывает движение транзакта, выходящего из блока GENERATE, на время планирования входа его последователя. После завершения планирования движение транзакта возобновляется.
Выполнение этих двух условий в виде блок-схемы показано на рис. 13.8. После завершения планирования транзакт 1 вызывает выполнение подпрограммы блока QUEUE. Из блока QUEUE интерпретатор перемещает транзакт в блоки SEIZE, DEPART и ADVANCE. В блоке ADVANCE (блок 5) определяется время задержки в соответствии с распределением 16 ± 4. По табл. 13.2 находим, что первым разыгранным значением является 18. Следовательно, транзакт 1 выводится из ЦТС и помещается в ЦБС. Планируется переход из блока 5 в блок 6 (блок RELEASE) в момент времени "текущий + 18, т.е. в момент времени 32.
Теперь, поскольку транзакт 1 вызвал выполнение подпрограммы блока SEIZE при своем движении, интерпретатор заново просматривает цепь текущих событий. Цепь пуста. Следовательно, следующим шагом будет выполнение фазы коррекции таймера.
Отметим, что транзакты цепи будущих событий в строке 4, если рассматривать их слева направо, имеют смысловые значения, записанные в табл.13.3.
Таблица 13.3. Смысловые значения транзактов в цепи будущих событий (строка 4, рис.13.6).
Номер транзакта | Смысловое значение |
3 | Второй клиент идет в парикмахерскую |
1 | Первый клиент стрижется |
2 | Транзакт-таймер |
(от строки 4 к строке 5). Интерпретатор продвигает таймер к значению 27 - времени движения транзакта (транзакт 3), находящегося в начале строки 4 цепи будущих событий. Далее он перемещает транзакт из ЦБС в прежде пустую ЦТС. Следующий транзакт в ЦБС (транзакт 1) имеет время движения, отличное от 27.