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

UptoLike

int dr = 0, # число приостановленных читателей
dw = 0; # число приостановленных писателей
process Reader[i = 1 to M] {
while (true) {
# реализация неделимой
# операции < await (nw == 0) nr = nr + 1; >
P(e);
if (nw > 0) {dr = dr + 1; V(e); P(r); }
# если работает пи сател ь, то читатель приостановлен
nr = nr + 1;
SIGNAL;
[чтение базы данных];
# реализация неделимой операции < nr = nr 1; >
P(e);
nr = nr 1;
SIGNAL;
}
}
process Writer[i = 1 to N] {
while (true) {
# реализация неделимой
# операции < await (nr == 0 and nw == 0) nw = nw + 1; >
P(e);
if (nr > 0 or nw > 0) {dw = dw + 1; V(e); P(w); }
nw = nw + 1;
SIGNAL;
[записать в БД];
# реализация неделимой операции < nw = nw 1; >
P(e);
nw = nw 1;
92