キューを次のように宣言すると
typedef boost::lockfree::queue<MyMessage, boost::lockfree::fixed_sized<true>> MessageQueue
つまり、複数のスレッドからキューにメッセージを投稿し、単一のスレッドからのメッセージのキューをポーリングすると、コンシューマー スレッドがロックされます。何も前に進みません。
しかし、固定サイズ プロパティを使用しない場合、つまりテンプレート パラメータを指定しないfixed_sized<true>
場合、キューは正常に動作します。ただし、この場合、キューは実際にメモリの割り当て/割り当て解除を行い、ロックレス キューを使用する目的を無効にします。
したがって、私の質問は、「プロパティで設定すると、boost::lockfree::queue はシングル プロデューサー シングル コンシューマー キューになりますfixed_sized<true>
か?」ということです。
私が使用する必要があるいくつかの異なるプッシュ/ポップ方法はありますか?
メモリ割り当ての解放を行わない MPMC キューが必要です。ブーストがこれを提供しない場合、使用できる他のキューはありますか??
前もって感謝します、