Возникла интересная задачка. Не могу никак сообразить как её решить наиболее оптимальным путём. То ли туплю, то ли знаний не хватает...
Итак, есть кольцевой буфер (Circular Buffer), поток-производитель (Producer Thread) и потоки-потребители (Consumer Threads). Производитель заполняет ячейки буфера, потребители их считывают. Ячейка буфера должна быть доступна для производителя не раньше чем
ВСЕ потребители считают из неё данные. Алгоритм работы обычного кольцевого буфера (один производитель, один потребитель) не подходит, поскольку в нём после прочтения уже одним потребителем объект синхронизации разрешит производителю перезапись блока.
Ситуация осложняется ещё тем, что число потребителей может меняться в процессе выполнения. Впрочем, по условиям задачи их число не может возрастать, что несколько упрощает дело. Однако, на это пока можно не обращать внимания, для начала можно решить задачу и с неизменным числом потребителей
Каким образом можно реализовать такой буфер? Какие объекты синхронизации использовать в данном случае? Буду очень благодарен за любую помощь. Заранее спасибо.