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