Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
задания.doc
Скачиваний:
92
Добавлен:
15.03.2015
Размер:
2.13 Mб
Скачать

Split a,[b],c]

Табл. 33. Значения операндов

Операнд

Значение

Результат по умолчанию

А

Число создаваемых копий транзакта

Ошибка

В

Метка блока, куда направляются копии

C

Параметр, в котором запоминаются номера копий транзактов

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

Операнд В задает блок, в который переходят копии начального транзакта. Операнд может быть именем (меткой), положительным целым, СЧА, СЧА*СЧА (в трех последних случаях операнд В задает номер блока). Значение операнда В вычисляется для каждой копии отдельно.

Операнд С задает параметр транзакта, который используется для присвоения копиям последовательных номеров. Операнд С может быть именем, положительным целым, СЧА, СЧА* СЧА.

Транзакты, принадлежащие одному семейству, объединяются интерпретатором в список. По связям внутри семейства транзактов невозможно установить, какой из транзактов семейства является на­зальным. Если копия транзакта входит в блок SPLIT, то повторная копия становится членом того же семейства, что и первичная копия. Таким образом, каждый транзакт является членом одного и только одного семейства. Семейство может состоять из произвольного числа транзактов. Когда транзакт уничтожается, интерпретатор автоматически исключает его из членов соответствующего семейства. Таким образом, семейство существует до тех пор, пока из модели не удалит­ся последний из ее членов.

В модели одновременно может присутствовать произвольное вдело семейств, оно все время меняется, поскольку каждый транзакт, генерируемый блоком GENERATE, может создать свое семейство.

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

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

Match a

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

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

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

Assemble a

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

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

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