Комментарии 1
Вспомнил, как реализовывал кольцевой буфер, чтобы гонять данные из ядра в юзерспейс.
Тоже один писатель, один читатель. Загвоздка была в том, что данные были строками разного размера, что сильно усложняло их обработку - из-за требования по производительности нужно было zero-copy, то есть парсить эти строки прямо на месте, в кольцевом буфере, и вот на краю буфера парсеру надо было перескакивать в начало буфера, как-то склеивать элемент с копированием в отдельный буфер. В общем долго, некрасиво.
В итоге все решил очень просто - замапил этот буфер и в ядре, и в юзерспейсе дважды подряд в памяти. В результате продолжение строки на границе буфера просто читалось в начале второй мапы, как будто никакой границы нет.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Структуры данных на практике. Глава 18: Очереди драйверов устройств