Составители:
while (true) {
. . .
< nr = nr + 1;
if (nr == 1) P(rw); # блокировку получает первый
>
[читать базу данных]
< nr = nr − 1;
if (nr == 0) V(rw); #снимает блокировку последний
>
}
}
process Writer[i = 1 to K] {
while (true) {
. . .
P(rw);
[ записать в базу данных];
V(rw);
}
}
Теперь для организации неделимости используем семафор, кото-
рый обозначим s. Тогда можно предложить следующую схему ре-
шения рассматриваемой задачи.
СХЕМА РЕШЕНИЯ ЗАДАЧИ “О ЧИТАТЕЛЯХ И
ПИСАТЕЛЯХ”
С ИСПОЛЬЗОВАНИЕМ СЕМАФОРОВ
int nr = 0; # число активных читателей
sem rw = 1; # блокировка доступа в БД
sem s = 1; # блокировка читателей при доступе к nr
process Reader[i = 1 to M] {
88
Страницы
- « первая
- ‹ предыдущая
- …
- 85
- 86
- 87
- 88
- 89
- …
- следующая ›
- последняя »