安全でないことについてのドキュメントはあまり明確ではありませんconcurrent_queue::unsafe_size()
です。TBB concurrent_queue、unsafe_sizeはどれくらい危険ですか?
言及tbb/internal/concurrent_queue.h
ファイル内のdoxygenにコメント:キューの
ゲットサイズ。キューが を変更された場合、結果が無効である可能性があり、同時に
私は何を知ることに興味を持って、それは過去のある時点で有効なサイズを返します、またはそれはゴミを返すことがありますか? (複数のスレッドが読み書きしている場合)
私は正確な値には興味がありませんが、それ以上は "負荷"の表示になります。コンシューマスレッドに問題が発生したときに、キューの容量が爆発的に増加するのを防ぎたい。私はconcurrent_bounded_queue
を使用していますが、これは名前が示すように容量コントロールがありますが、ロックフリーのプロパティを失うことになります。
ジョブを使用していない理由は、ジョブが非常に小さく(つまり、同期ソケットで送信)、常に同じである(入力パラメータのみが変更され、呼び出される関数ではない)ということです。このような状況では、このようなシナリオには不適切なタスクが多い可能性があります。それでも、我々はまだ仕事を完全に排除しているわけではなく、まださまざまな可能性を評価しています。キューはより良いスタートに見えました(編集:私たちの現在の "データフロー"により適したパイプラインを試してみるかもしれません)。 –
(途中であなたの答えをありがとう) –