Составители:
Рубрика:
Замечание. Как было сказано, здесь и далее используется
стратегия 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
Страницы
- « первая
- ‹ предыдущая
- …
- 20
- 21
- 22
- 23
- 24
- …
- следующая ›
- последняя »