Составители:
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
Страницы
- « первая
- ‹ предыдущая
- …
- 92
- 93
- 94
- 95
- 96
- …
- следующая ›
- последняя »