Операторы, имитирующие работу группирующей категории

Группирующую категорию образуют группы и списки. На языке GPSS W имеются различные по своему функциональному назначению списки, в том числе текущих событий, будущих событий, прерванных транзактов, транзактов, ожидающих в очереди. Наибольший интерес для программиста представляют списки пользователя, которые можно использовать для повышения эффективности работы программы. Списки пользователя позволяют поместить в них некоторые транзакты, которые не могут передвигаться в модели, в чем заранее уверен программист, и они выводятся из активного состояния, то есть переводятся в пассивное состояние. Этим самым они фактически лишаются регулярного «просмотра» диспетчером модели, за счет чего происходит сокращение времени моделирования. Снова вернуть их в активное состояние может только программист, предусмотрев для этого возможность их вывода из списка пользователя с помощью каких-то активных транзактов. Для изменения состояния списков пользователя применяют следующие блоки, представленные в таблице 1.12.

Таблица 1.16. Операторы, имитирующие работу группирующей категории

Блок Описание
LINK A,B,C Посылка активных транзактов в список пользователя,
UNLINK O A,B,C,D,E,F Вывод пассивных транзактов из списка пользователя

В операнде А данных блоков записывается идентификатор списка пользователя. В операнде В блока LINK указывается дисциплина помещения транзакта в список пользователя. Допустимы следующие дисциплины:

1. FIFO – первый пришел, первым вышел.

2. LIFO – последний пришел, первым вышел.

3. PR – чем выше приоритет, тем ближе к выходу из списка пользователя устанавливается транзакт.

4. Р – чем меньше число в параметре, тем ближе к выходу из списка пользователя устанавливается транзакт; в данном режиме требуется обязательно указать идентификатор параметра.

Ввод в список пользователя любого нового транзакта приводит к пересмотру очереди транзактов по выходу их из списка пользователя. Транзакт, вошедший в блок LINK, пытается войти в блок, метка которого указана в операнде С и таким образом, остаться активным. Если же это не удается, он переводится в пассивное состояние по правилу, заданному в операнде В.

Вывод пассивных транзактов из списка пользователя производится при поступлении какого-либо активного транзакта в блок UNLINK. В операнде O блока UNLINK записывается один из условных операторов отношений, или не записывается ничего. В операнде А блока UNLINK указывается идентификатор списка пользователя. В операнде В указывается метка, к которой направляются пассивные транзакты из списка, а активный транзакт переходит к следующему блоку. В операнде С указывается количество пассивных транзактов, удаляемых из списка пользователя. Если удаляются все транзакты, то записывается символ ALL. В операнде D указывается проверяемое значение. В операнде E указывается контрольное значение, которое сравнивается с содержимым операнда D. В операнде F указывается метка, к которой направляется транзакт в случае если по указанному условию в списке пользователя не удалось найти ни одного транзакта. Если в операнде F ничего не указано, то транзакт в любом случае направляется к следующему блоку.

Примеры использования описанных выше блоков приведены в таблице 1.17.

 

Таблица 1.17 Примеры использования операторов, имитирующих работу группирующей категории

Пример использования оператора Комментарии
LINK ONHOLD,FIFO Активный транзакт помещается в конец списка пользователя с именем ONHOLD
UNLINK  







Дата добавления: 2015-01-13; просмотров: 780;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.