boost :: lockfree :: spsc_queue и boost :: asio

Я хотел бы получить прямо в boost::lockfree:spsc_queue (или, альтернативно, boost::circular_buffer) из boost::asio::async_read вызов. Похоже, мне нужно написать оболочку, чтобы сделать spsc_queue MutableBuffer,

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

Большое спасибо

1

Решение

Каждый приемный буфер должен быть смежным при использовании asio,

поскольку boost::circular_buffer не является смежным, довольно неудобно использовать в качестве байтового буфера. Тем не менее, вы можете представить его asio как 2 буфера с сборка ввода-вывода.

Эффективный и удобный циклический буфер для ввода / вывода — это область страниц памяти, отображаемых дважды без какого-либо дополнения между ними. Таким образом, вы можете читать в свой круговой буфер с одним read syscall, без необходимости использовать сборку ввода-вывода с разбросом и без необходимости разбирать буфер при разборе / чтении его содержимого.

3

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

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

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