интересно
Предыдущая | Содержание | Следующая

Транзактно-управляемый терминатор.

Узловой оператор delet(pi,p2,p3P4>Ps>P) предназначен для уничтожения группы транзактов семейств, номера которых относятся к диапазону, задаваемому параметрами рг и рз. В отличие от терминатора term он управляется специальным транзактом, который называется поглощающим. Если, например, обозначить номер семейства транзакта как Numer, то транзакт будет уничтожен при входе в узел delet при выполнении двух условий:

в узел зашел поглощающий транзакт, принадлежащий семей ству р4;

выполнено соотношение рг ^ Numer й р3. Рассмотрим параметры узла.

Параметр pi - символическое имя узла: строка длиной до 14 символов, включая пробелы (char).

Параметр рг - начало (int) диапазона номеров семейств уничтожаемых транзактов.

Параметр рз - конец (int) диапазона номеров семейств уничтожаемых транзактов.

Параметр р4 - идентификатор (int) семейства, к которому принадлежит поглощающий транзакт.

Параметр р$ - число уничтожаемых транзактов семейства рг (int).

Параметр ре - номер узла (int), в который направляется уничтожающий транзакт.

Логика функционирования этого узла такова: в узел входит транзакт семейства Р4 и находится там до тех пор, пока в него не поступят р5 транзактов семейства рг й Number й р3, которые он должен мгновенно уничтожить (поглотить). Время существования этих транзактов фиксируется в узле delet. Узел получает координаты каждого уничтожаемого транзакта, т.е. он перемещается по координатной сетке. В общем случае номера семейств pi и рг могут совпадать с номером рз (но с методической точки зрения такие совпадения нежелательны).

Среднее время задержки в данном случае - это среднее время ожидания всех уничтожаемых транзактов или части таких транзактов, если из состояния ожидания узел delet выводится принудительно с помощью функции freed. Следует учесть, что обслуживание транзактов в таком узле - это их уничтожение.

Отметим, что если в такой узел так и не поступят pj транзактов, то уничтожающий транзакт будет все время находиться в нем, блокируя поступление в него других уничтожающих транзактов. Поэтому имеется средство для изгнания уничтожающего транзакта из узла delet - функция freed(i). Эта функция является сигнальной. Она рассмотрена в разд. 5.5.

В данном случае имеется возможность автоматического подсчета:

среднего времени жизни уничтожаемых транзактов (или части транзактов, если из состояния ожидания узел delet выводится принудительно - выполнением функции freed);

числа уничтоженных транзактов.