Доброе утро!
Есть следующая задача: некоторое приложение принимает из сети информацию, которая должна быть обработана несколькими клиентами. Проще говоря, имеет одного производителя и много потребителей. Каждый пакет должен быть обработан всеми клиентами в "приблизительно" реальном времени. Клиенты -- разнородные процессы на одном хосте. Первое, что приходит в голову -- использовать кольцевой буфер в общей память, а также семафоры для синхронизации. Однако, возможен следующий сценарий: один из клиентов заснет и проспит достаточно долго (мы не удерживаем блокировку долго из соображений эффективности) и проспит весь круг -- нужно иметь способ восстановиться из архива (есть также один клиент, который просто архивирует информацию на диск). Средство IPC, имеющее отношение к диску лучше не предлагать (например, вызов внешнего приложения при ротации архива). Может быть будут какие-либо идеи?
Заранее спасибо.