Составители:
Рубрика:
}
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
Страницы
- « первая
- ‹ предыдущая
- …
- 30
- 31
- 32
- 33
- 34
- …
- следующая ›
- последняя »