ограничения: В моей системе доступно 250 МБ оперативной памяти. Количество
данные, генерируемые производителем, лежат около 5 Мб / с. Мне нужно предоставить
буфер около 30 секунд. Итак, около 150 МБ …
Чего я пытаюсь добиться: Реализация одного производителя для одного потребителя
кольцевой буфер в креплении tmpfs. Один поток должен работать как производитель, заполняющий буфер, а несколько потоков должны извлекать данные из буфера.
Пока я пробовал vectors
(c ++) все это приводит к ошибке выделения. Кажется, использование непрерывного выделения памяти не будет работать (для объемов около 50 МБ). С помощью deque
(не смежно) с другой стороны работает нормально. Но я ограничен ответом ядра относительно управления памятью, и доступная память может лежать ниже ожидаемого количества для инициализации буфера … Вот почему я бы предпочел использовать tmpfs
как это установлено с предопределенным размером.
Используя класс, содержащий циклический буфер с соответствующими одновременно безопасными методами и свойствами (возможно, без блокировки?), Я мог бы создать буфер, используя последовательность файлов в tmpfs
с продолжительностью 1 секунда / каждый.
Будет ли это достаточно быстрым по сравнению с реализацией deque или я почувствую отставание, вызванное одновременным доступом к файлам из нескольких потоков?
Что вы думаете, ребята … Я что-то упустил? …
Задача ещё не решена.
Других решений пока нет …