Файлы в оперативной памяти (tmpfs), представляющие многопользовательский буфер одного производителя

ограничения: В моей системе доступно 250 МБ оперативной памяти. Количество
данные, генерируемые производителем, лежат около 5 Мб / с. Мне нужно предоставить
буфер около 30 секунд. Итак, около 150 МБ …

Чего я пытаюсь добиться: Реализация одного производителя для одного потребителя
кольцевой буфер в креплении tmpfs. Один поток должен работать как производитель, заполняющий буфер, а несколько потоков должны извлекать данные из буфера.

Пока я пробовал vectors (c ++) все это приводит к ошибке выделения. Кажется, использование непрерывного выделения памяти не будет работать (для объемов около 50 МБ). С помощью deque (не смежно) с другой стороны работает нормально. Но я ограничен ответом ядра относительно управления памятью, и доступная память может лежать ниже ожидаемого количества для инициализации буфера … Вот почему я бы предпочел использовать tmpfs как это установлено с предопределенным размером.

Используя класс, содержащий циклический буфер с соответствующими одновременно безопасными методами и свойствами (возможно, без блокировки?), Я мог бы создать буфер, используя последовательность файлов в tmpfs с продолжительностью 1 секунда / каждый.

Будет ли это достаточно быстрым по сравнению с реализацией deque или я почувствую отставание, вызванное одновременным доступом к файлам из нескольких потоков?

Что вы думаете, ребята … Я что-то упустил? …

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]