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

UptoLike

5) w = 0; #семафор w служит для приостановки писателей
#всегда выполнено условие 0 (e + r + w) 1
6) int dr = 0, # dr число приостановленных читателей
7) dw = 0; # dw число приостановленныъ писателей
8) process Reader[i = 1 to M] {
9) while (true) {
# реализация неделимой
# операции < await (nw == 0) nr = nr + 1; >
10) P(e);
11) if (nw > 0) {dr = dr + 1; V(e); P(r); }
12) nr = nr + 1;
13) if (dr > 0) {dr = dr 1; V(r); }
14) else V(e);
15) [чтение базы данных];
# реализация неделимой операции < nr = nr 1; >
16) P(e);
17) nr = nr 1;
18) if (nr == 0 and dw > 0) {dw = dw 1; V(w); }
19) else V(e);
20) }
21) }
22) process Writer[i = 1 to N] {
23) while (true) {
# реализация неделимой
# операции < await (nr == 0 and nw == 0) nw = nw + 1; >
24) P(e);
25) if (nr > 0 or nw > 0) {dw = dw + 1; V(e); P(w); }
26) nw = nw + 1;
27) V(e);
28) [запись в БД];
95