Технология программирования для распределенных параллельных систем. Демьянович Ю.К - 22 стр.

UptoLike

Замечание. Как было сказано, здесь и далее используется
стратегия SC (signal and continue) “сигнализировать и про-
должить”. Если бы использовалась стратегия “сигнализировать и
ждать”, то возникал бы вопрос о передаче исключительного пра-
ва владения данной процедурой. Отметим также, что в Unix, Java,
Pthreads использована стратегия SC.
§ 7. Монитор, реализующий кольцевой буфер
Для представления очереди сообщений использован массив buf
длины n, который “замкнут в кольцо”, т. е. индекс j определяется
по модулю n.
Целочисленные переменные front и rear указывают на первую
заполненную и первую пустую ячейку (см. рис. 3). Условные пере-
менные not_full и not_empty связаны с двумя очередями. Опера-
ции с буфером deposit (“вклад”) и fetch (“выборка”) процедуры
монитора.
Рис. 3. Кольцевой монитор
monitor Bounded_Buffer {
type T buf[n]; # массив некоторого типа T
int front=0; # индекс первой заполненной ячейки
rear=0; # индекс первой пустой ячейки
count=0; # число заполненных ячеек
## rear=(front+count)%n
cond not_full,
23