Возможен ли фрагментированный кольцевой буфер без блокировки с несколькими считывателями/писателями (MPMC)?

Для моего текущего проекта я хочу реализовать или (лучше повторно использовать)

Ограниченный фрагментированный кольцевой буфер для пакетов переменного размера.

Каждый читатель должен поддерживать свой собственный указатель чтения; это означает, что каждый считыватель должен читать все пакеты (если читает достаточно быстро). Если модуль записи догоняет считыватель, указатель считывателя должен быть перемещен вперед к следующему допустимому пакету.

При поиске существующих работ и документов я нашел всевозможные очереди без блокировки, FIFO и т. д., но ни один из них не реализует вышеупомянутую семантику!

Кто-нибудь знает о существующей реализации, которая реализует этот тип семантики или, возможно, может быть адаптирована для ее поддержки?

Полезные указатели приветствуются!


person fhw72    schedule 07.12.2012    source источник
comment
Похоже на LMAX Disruptor lmax-exchange.github.com/disruptor. Обсуждение SO stackoverflow.com/questions/6559308/ .Также где-то есть реализация на С++   -  person    schedule 07.12.2012
comment
Выглядит довольно интересно. К сожалению, порт C++ действительно устарел, но я посмотрю глубже! Спасибо!   -  person fhw72    schedule 07.12.2012