Теория распараллеливания и синхронизация. Демьянович Ю.К - 87 стр.

UptoLike

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