Имеется некоторое приложение, которое получает бинарные данные из некого потока информации (пусть это будет FIFO-файл). Хочется, чтобы несколько других приложений могли обрабатывать эти данные в реальном времени. Для этого реализована схема с двойной буферизацией: в каждый момент времени в одном из буферов находятся все обработчики, а в другой в это время происходит запись. Синхронизация основана на двух семафорах. Проблема состоит в следующем: обработчик информации может захватить семафор и заблокироваться на неопределенный момент времени во время чтения. Из-за этого обработчики сразу же делают memcpy() всего буфера в локальную память и отпускают блокировку. В случае если они задерживаются, то происходит восстановление из архива, требующее I/O. Возможно имеется какая-то известная схема решения этой проблемы?
Ответ на:
комментарий
от pathfinder
Ответ на:
комментарий
от cs
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Синхронные IPC vs Асинхронные IPC (2008)
- Форум Posix IPC vs SystemV IPC. (2007)
- Форум unbuffered IPC (2017)
- Форум IPC Warn (2011)
- Форум IPC Semaphores (2013)
- Форум Накостылить IPC (2021)
- Форум IPC, сигналы (2021)
- Форум Мультисерверный IPC (2024)
- Форум IPC question (2011)
- Форум [C] IPC (2009)