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

UptoLike

[размышляет (датчик с.ч.)];
}
}
process Philosopher[4] {
while (true) {
P(fork[0]); P(fork[4]);
# взял правую вилку, потом левую
[ест (датчик с.ч.)];
V(fork[0]); V(fork[4]);
# освободи л правую, потом левую вилку
[размышляет (датчик с.ч.)];
}
}
§5 Задача “о читателях и писателях” как
задача исключения
В базе данных (БД) имеется лишь два типа процессов: читатели и
писатели. Читатели просматривают записи (транзакции чтения), а
писатели просматривают и изменяют записи (транзакции чтения и
записи). Исходное состояние базы данных считается непротиворе-
чивым (осмысленным). Каждая транзакция переводит ее из одного
непротиворечивого состояния в другое. Для отсутствия взаимно-
го вмешательства процесс-писатель должен иметь исключитель-
ный доступ к базе данных. Если ни один процесс-писатель не обра-
щается к базе данных, то ее могут читать любое число процессов-
читателей.
Пус ть rw семафор взаимного исключения с начальным зна-
чением 1. Читатели должны блокировать группу писателей, но при
этом лишь первый из них устанавливает блокировку P(rw); осталь-
ные читатели могут сразу обращаться к базе данных. Последний
активный процесс-читатель должен снимать блокировку. Однако,
сначала приведем решение с дополнительным ограничением: не
только каждый писатель, но и любой читатель имеет исключитель-
ный доступ к БД.
86