Составители:
# реализация неделимой операции < nw = nw − 1; >
29) P(e);
30) nw = nw − 1;
31) if (dr > 0) {dr = dr − 1; V(r); }
32) elseif (dw > 0) {dw = dw − 1; V(w); }
33) else V(e);
34) }
35) }
В рассматриваемых случаях преимущество отдается процессу-
читателю. Однако, можно осущес твить другие способы планирова-
ния, если изменить программу.
Для того, чтобы отдавалось предпочтение процессам-
писателям, необходимо, чтобы
— если ждет процесс-писатель, то новые процессы-читатели
должны его пропустить (а сами должны приостановиться);
— приостановленный процесс-читатель возобновляет рабо-
ту только в том случае, если нет приостановленных процессов-
писателей.
Первое условие можно выполнить, заменив строку 11 в преды-
дущей программе строкой
if (nw >= 0 or dw > 0) {dr = dr + 1; V(e); P(r); },
а второе условие выполнится, если изменить порядок ветвей опе-
ратора if процессов-писателей (см. строки 31–33 предыдущей про-
граммы) следующим образом:
if (dw > 0) {dw = dw − 1; V(w); }
elseif (dr > 0) {dr = dr − 1; V(r); }
else V(e);
Вывод. Преимущество метода пер ед ачи эстафеты в том, что
для управления порядком запуска процессов можно менять условия
защиты, не влияя на правильность решения.
96
Страницы
- « первая
- ‹ предыдущая
- …
- 93
- 94
- 95
- 96
- 97
- …
- следующая ›
- последняя »