2017-05-23 1 views
0

boost::asio::async_readコールからboost::lockfree:spsc_queue(あるいは、boost::circular_buffer)に直接受信したいと思います。 Spsc_queueを作成するためのラッパーを書く必要があるようです。MutableBufferboost :: lockfree :: spsc_queueとboost :: asio

これが可能であるかどうか、またこれを達成する方法について、誰かがいくつかガイダンスを共有できますか?

感謝

+2

'boost :: lockfree:spsc_queue'は受信バイトに適したバッファではありません。 –

+0

ヘッドアップありがとう。 'boost :: circular_buffer'は適切なバッファですか? – schuess

答えて

2

それぞれasioを使用するときにバッファが連続していなければならない受け取ります。

boost::circular_bufferは連続していないので、バイトバッファとして使用するのはむしろ不便です。ただし、asioには2つのバッファーとしてscatter-gather I/Oと表示できます。

I/O用の効率的で便利な循環バッファーは、メモリーページの領域を、それらの間のパディングなしで2回マップした領域です。こうすることで、scatter-gather I/Oを使わずに、内容の解析/読み込み時にバッファの不連続性を処理することなく、循環バッファに1つのreadシステムコールを読み込むことができます。

関連する問題