Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции / Уч_пособие_МС.doc
Скачиваний:
319
Добавлен:
20.02.2014
Размер:
10.43 Mб
Скачать

4.3.5. Блоки для обработки сообщений, принадлежащих одному

семейству

Блоки GENERATE являются основным средством создания сообщений и ввода их в модель. Вход сообщений в блок GENERATE не допускается. Помимо блока GENERATE, для создания сообщений используется также блок SPLIT, который создает заданное число копий вошедшего в блок сообщения. Эти копии принадлежат к тому же семейству, что и поро­дившее их сообщение.

Блок TERMINATE является основным средством уничтожения сооб­щений и удаления их из модели. Для удаления сообщений, принадлежа­щих к одному семейству, может быть также использован блок ASSEMBLE.

4.3.5.1. Блок SPLIT

Блок SPLIT имеет следующий формат:

SPLIT <A>,[<B>],[<C>]

Блок SPLIT выполняет функцию копирования входящего в него со­общения, которое называется исходным или порождающим.

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

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

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

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

4.3.5.2. Блок ASSEMBLE

Блок ASSEMBLE имеет следующий формат:

ASSEMBLE <A>

Блок ASSEMBLE объединяет заданное число сообщений, принадле­жащих к одному семейству, в одно сообщение (т.е. осуществляет сбор­ку заданного числа сообщений). После сборки из блока ASSEMBLE выхо­дит только одно сообщение, которое переходит в следующий по номеру блок. В одном и том же блоке ASSEMBLE возможна одновременная сборка сообщений нескольких семейств. Когда сообщение входит в блок ASSEMBLE, интерпретатор просматривает семейство, к которому принад­лежит это сообщение, и проверяет, есть ли другое сообщение из того же семейства в данном блоке ASSEMBLE.

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

4.3.5.3. Блок MATCH

Блок MATCH имеет следующий формат:

MATCH <A>

Блок MATCH используется для синхронизации движения двух сооб­щений, принадлежащих к одному семейству, без удаления этих сообще­ний из модели.

Блоки MATCH не объединяют синхронизируемые сообщения. Синхро­низация осуществляется путем подбора пар сообщений из одного семей­ства и задержки этих сообщений до тех пор, пока оба сообщения из одной пары не поступят в заданные точки модели. Сообщения никогда не задерживаются в блоке MATCH. Сообщения, для которых выполнилось условие синхронизации, переходят к следующему по номеру блоку. В одной паре блоков MATCH могут одновременно находиться в состоянии синхронизации пары сообщений из различных семейств. Возможна также одновременная синхронизации пар сообщений из одного семейства в нескольких блоках MATCH.

Поле А задает имя или номер другого блока MATCH, называемого "сопряженным блоком MATCH". Если такого блока нет, происходит оста­нов по ошибке. Операнд А может быть именем, положительным целым, СЧА.

Допускается использование блока MATCH в качестве сопряженного самому себе.

Стандартным числовым атрибутом, связанным с описываемым опе­ратором является:

МВ<номер блока> – флаг синхронизации. Возвращает 1, если со­общение, находящееся в блоке <номер блока>, принадлежит к тому же семейству, что и текущее.