Составители:
Рубрика:
Каждое поле field_i может быть выражением или формаль-
ным параметром вида ?var, где var — имя переменной выполняе-
мого процесса.
Аргументы примитива IN называются шаблоном. Процесс IN
ждет, пока в ПК появится хотя бы один кортеж, соответству-
ющий шаблону, и удаляет его из ПК.
Кортеж d соответствует шаблону t, если
1) их метки идентичны;
2) число полей d и t одинаково;
3) значение каждого выражения в t (если оно указано) равно
соответствующему знач ени ю в кортеже данных d.
После того, как кортеж будет удален из ПК формальным пара-
метрам шаблона присваивается соответствующие значения.
Пример 1. Реализация семафора.
Пусть sem — символьное имя семафора. Тогда операция V над
семафором (увеличение семафора на единицу) будет иметь вид
OUT("sem"), а операция P над семафором (ожидание увеличения се-
мафора на единицу, если он был нуль) будет иметь вид IN("sem").
Замечание. Операции P и V состоят из следующих нед ел имых
операций: P(s): <await(s>0); s=s-1;>, V(s): <s=s+1;>.
Знач ен ие семафора — чи сло кортежей sem в пространстве кор-
теже й.
Для моделирования массива семафоров используется дополни-
тельное поле, представляющее индекс массива, например
IN("sems", i); # P[sems[I]]
OUT("sems", i); # V[sems[I]]
Базовый прими тив RD (блокирующий) используется для про-
смотра кортежей в пространстве кортежей (без их изъятия из этого
пространства — в отличие от примитива IN). Если t — шаблон, то
RD(t) пр иостанавливает проце сс до тех пор, пока в пространстве
кортежей не появится кортеж, соответствующий шаблону t.
Примитивы INP и RDP выполняют те же действия, что IN и RD, но
не являются блокирующими; они кроме того возвращают TRUE или
FALSE в зависимости от того, есть или нет кортежа в пространстве
кортежей с данным шаблоном .
INP — извлекает кортеж из ПК (если он есть);
65
Страницы
- « первая
- ‹ предыдущая
- …
- 62
- 63
- 64
- 65
- 66
- …
- следующая ›
- последняя »