Методичні вказівки до лабораторних робіт з курсу "Моделювання систем", страница 28

SPLIT 3,P20,20

У даному прикладі щораз, коли блок SPLIT генерує 3 нових транзакта, всі вони мають однаковий пріоритет, Mark Time і значення, такі, як і в “батьківського” транзакта, крім параметра номер 20. Копії, отримані в блоці SPLIT, можуть мати число й типи параметрів, відмінні від вихідного транзакта.

Всі транзакти, зґенеровані блоком SPLIT, з одного вихідного транзакта і його копій належать до одного ансамблю. Число транзактів в ансамблі, довільно. Кожний транзакт, створений у блоці GENERATE, є окремим ансамблем. Таким чином, число ансамблів у системі довільно, і ансамбль існує доти, поки в ньому перебуває хоч один транзакт.

3.2.2 Група блоків синхронізації руху транзактів

Блок ASSEMBLE (ЗІБРАТИ) використається для об'єднання заданого числа транзактів, що належать тому самому ансамблю. Число поєднуваних транзактів ансамблю вказується в поле А. Транзакти будуть затримуватися в блоці ASSEMBLE доти, поки не надійде задане число транзактів цього ансамблю. У результаті на виході блоку з'являється один (перший) транзакт ансамблю, а інші транзакти знищуються. В одному блоці ASSEMBLE можуть накопичуватися транзакти різних ансамблів, також як транзакти одного ансамблю можуть накопичуватися в різних блоках ASSEMBLE. Якщо число членів ансамблю, що збирають, задається за допомогою непрямої адресації, то для його визначення використається параметр першого що прийшов транзакта ансамблю. Розглянемо приклади використання блоку ASSEMBLE:

ASSEMBLE 5

(тобто збирається п'ять транзактів, з яких чотири потім знищуються, а один переходить у наступний блок).

ASSEMBLE P1

(тобто збирається число транзактів, рівне значенню параметра “1” першого транзакту ансамблю).

Дія блоку GATHER (ЗІБРАТИ) аналогічно дії блоку ASSEMBLE. Відмінність складається тільки в тім, що після нагромадження в блоці числа транзактів, зазначеного в поле A, вони все передаються в наступний блок. Блок GATHER дозволяє синхронізувати рух транзактів одного ансамблю при їхньому русі по одному шляху. Приведемо приклад використання блоку GATHER:

GATHER 3

(тобто після приходу трьох транзактів, вони надходять у наступний блок).

Блок MATCH (ПОГОДИТИ) призначений для синхронізації просування двох транзактів одного ансамблю, що рухаються по різних шляхах. Для синхронізації необхідні два блоки MATCH, що перебувають у відповідних вузлах блок-діаграми й називані сполученими. У поле А кожний блок MATCH указується мітка сполученого йому блоку. При підході транзакта до блоку MATCH перевіряється наявність у сполученому йому блоці транзакту з того ж ансамблю. Якщо в обох блоках є транзакти одного ансамблю, то вони одночасно пропускаються через блоки MATCH. Якщо в сполученому блоці немає жодного транзакту даного ансамблю, то що надійшов транзакт буде очікувати надходження транзакту того ж ансамблю в сполучений блок MATCH, після чого вони обоє будуть пропущені в наступні за блоками MATCH блоки.