[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Один производитель и несколько потребителей буфера
Напишите программу-производитель, которая помещает текст в буфер,
размещенный в сегменте разделяемой памяти. Напишите программу-
потребитель, которая будет читать из этого буфера. Может существовать
несколько копий потребителя. Производитель может обновлять буфер
только после того, как все потребители считали его содержимое.
Совет: Эта программа похожа на Задание 1. Нужны два семафора, но их
значения будут меняться в диапазоне от 0 до количества потребителей.
Несколько читающих процессов и один эксклюзивный процесс записи в
разделяемую память
Предположим, что исполняется n процессов. Часть из них читает, а
остальные пишут в разделяемый сегмент памяти. Несколько читающих
процессов могут работать с буфером одновременно. Если один из пишущих
процессов выполняет запись, все остальные процессы должны ждать. Кроме
того, если пишущий процесс хочет обновить данные, он должен ждать,
пока все читающие процессы закончатся. Для обеспечения такого
взаимного исключения надо использовать семафоры.
Замечание: В решении приведена одна программа, которая иногда читает,
а иногда пишет.
Совет: Один из способов решения состоит в использовании набора из трех
семафоров со следующими значениями:
индекс 0  счетчик процессов, выполняющих чтение
индекс 1  двоичный семафор, гарантирующий, что только один процесс
          может писать в буфер

индекс 2  используется для блокировки чтения на время записи или
          ожидания записи