Технология программирования для распределенных параллельных систем. Демьянович Ю.К - 32 стр.

UptoLike

}
procedure get_next_customer(){
barber=barber+1;
signal(barber_available);
while(chair==0) wait(chair_occupied);
chair=chair-1;
}
procedure finished_cut(){
open=open+1;
signal(door_open);
while(open>0) wait(customer_left);
}
}
Особенности монитора таковы.
I. В процедуре get_haircut имеется два обращения к процедуре
wait:
1) посетителю нужно ждать освобождения парикмахера (ка-
нал barber_available);
2) посетителю приходиться ждать в процессе стрижки (канал
door_open);
II. Посетителю еще нужно ждать
3) в кресле перед началом стрижки анал chair_occupied);
4) после стрижки до открытия выходной двери анал
customer_left).
§ 2. Активные мониторы
Как видно из предыдущих параграфов, монитор управляет ре-
сурсом, предоставляя набор процедур для доступа к нему.
Процедуры выполняются со взаимным исключением и исполь-
зуют переменные для условий синхронизации.
В некотором смысле рассмотренные ранее мониторы являются
пассивными наборами процедур, а не активными процессами.
В условиях распределенной памяти и взаимодействия процес-
сов на основе передачи сообщений желательно программировать
мониторы в виде активных процессов.
Предположим, что в мониторе имеется лишь одна процедура op.
Тогда структура монитора такова
33