Terminate 1

Для синхронизации движения транзактов, принадлежащих од­ному семейству, используются блоки MATCH (СОГЛАСОВАТЬ), ASSEMBLE (СОБРАТЬ), GATHER (СОЕДИНИТЬ).

Блок MATCH синхронизирует движение транзактов с другим блоком MATCH. Формат блока:

MATCH A

Операнд А указывает имя сопряженного блока. Сопряженным блоком является также блок MATCH.

Пример 4.51

В локальной сети рабочая станция опрашивается каждые 30 мс. Если на рабочей станции есть сообщение для передачи, то оно зани­мает канал.

LABELl MATCH LABEL2; Сообщение ждет опроса рабочей станции

SEIZE CHANNEL; Занять канал

LABEL2 MATCH LABELl; Опрос рабочей станции

ADVANCE 30; Время до следующего опроса

При входе транзакта-сообщения в блок MATCH с меткой LABELl он будет ждать (в списке синхронизации) момента, когда Другой опросный транзакт, принадлежащий тому же семейству, не войдет в сопряженный блок MATCH с меткой LABEL2. Только по­сле этого сообщение займет канал CHANNEL, а опросное сообщение перейдет в блок ADVANCE.

Блок ASSEMBLE собирает начальный транзакт и все транзак­ты-копии из одного семейства, удаляет копии и выдает один началь­ный транзакт. После сборки из блока ASSEMBLE выходит только один транзакт, который переходит в следующий по номеру блок. Формат блока:

ASSEMBLE A

Операнд А задает счетчик сборки, указывающий сколькхз членов одного семейства должны быть объединены. Операнд А может быть именем, положительным целым, СЧА, СЧА*СЧА. Первоначальное значение операнда А не должно быть меньше или равно единице.

Блок GATHER скапливает заданное количество транзактов, принадлежащих одному семейству. Он задерживает их до тех пор, пока не соберется необходимое число, указанное операндом А. Затем накопленные транзакты одновременно попытаются войти в следую­щий по номеру блок.

Формат блока:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: