制約:私のシステムには 250MB の RAM メモリがあります。プロデューサーによって生成されるデータ量は、約 5Mb/秒です。約 30 秒のバッファーを提供する必要があります。150MBくらい…
私が達成しようとしていること: tmpfs マウントに単一プロデューサー、単一消費者のリングバッファーを実装します。1 つのスレッドがバッファーを埋めるプロデューサーとして機能し、複数のスレッドがバッファーからデータをフェッチする必要があります。
vectors
これまでのところ、割り当てエラーにつながるすべて(c ++)を試しました。連続したメモリ割り当てを使用しても機能しないようです (約 50 MB の場合)。deque
一方、(不連続)を使用するとうまくいきます。しかし、私はメモリ管理に関するカーネルの応答に制限されており、利用可能なメモリはバッファを初期化するために予想される量を下回る可能性がありますtmpfs
.
関連する並行して安全なメソッドとプロパティ (おそらくロックフリー?) を持つ循環バッファーを含むクラスを使用するとtmpfs
、1 秒/1 秒の一連のファイルを使用してバッファーを作成できます。
これは、deque の実装と比較して十分に高速でしょうか?それとも、複数のスレッドから同時にファイルにアクセスすることによって発生する遅延を感じますか?
皆さんはどう思いますか...何か不足していますか?...