Теория распараллеливания и синхронизация. Демьянович Ю.К - 98 стр.

UptoLike

Здесь SIGNAL представляет фрагмент кода, который
1) запускает приостановленные процессы, если их запрос мо-
жет быть удовлетворен, снимая блокировку с семафора задержки
r;
2) снимает блокировку e критической секции (разрешая ожи-
дающему процессу вход в критическую секцию), если запрос не
может быть удовлетворен
Таким образом SIGNAL имеет вид
SIGNAL :
if ([выполнены условия возобновления процессов])
V(r);
# запустить приостановленные процессы
# V посылка сигнала процессам
else
V(e);
#освободить блокировку входа
Замечание 2. Фактически, роль SIGNAL сигнализировать
процессам, связанным с семафором задержки r, что они могут
продолжать работу. М ожет быть также нес колько групп п роце ссов
G
1
, G
2
, . . . , G
k
, причем каждая группа G
j
связана со своим сема-
фором r
j
. В этом случае SIGNAL можно рассматривать как сигнал
одному из семафоров r
1
, . . . , r
k
, e (см. предыдущий параграф); при
этом говорят, что с помощью SIGNAL реализуется разделяемый се-
мафор.
Далее, DELAY также представляет собой фрагмент кода, кото-
рый
1) запоминает число запросов n,
2) снимает блокировку критической секции с помощью опера-
ции V(e),
3) блокирует процесс на семафоре задержки r помощью
P(r)).
Приведем схему фрагмента кода DELAY:
DELAY :
{n = n + 1; V(e); P(r); }
99