Page 120 - 4868
P. 120
Ошибка! Стиль не определен. 118
while (open == 0) wait(door_open);
open = open-1;
signal(customer_left);
}
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);
}
}
У наведеній реалізації монітора використовується процедура
get_haircut, що містить два оператори wait, оскільки відвідувач
проходить через два етапи: спочатку він чекає, поки не звільниться перукар, а
потім – поки не закінчиться стрижка.
Запитання для самоперевірки
1. Яку роль відіграє програмний монітор у задачі про читачів та
письменників?
2. Яким чином виконується синхронізація процесів у задачі про читачів
та письменників із використанням моніторів?
3. Яке основне призначення інтервального таймера?
4. У чому полягає принцип роботи інтервального таймера?
5. Що виступає ресурсом у моніторі який реалізує інтервальний таймер?
6. Який принцип роботи інтервального таймера з покриваючою умовою?
7. Який принцип роботи інтервального таймера з пріоритетним
очікуванням?
8. Яке формулювання задачі про сплячого перукаря?
9. У чому полягає суть синхронізації під назвою «рандеву»?
10. Який алгоритм рішення задачі про сплячого перукаря з
використанням програмних моніторів?