ConcurrentBagでは、複数のスレッドがバッグにアイテムを追加したり、バッグからアイテムを削除したりすることができます。スレッドがアイテムをバッグに追加してから、同じアイテムをすぐに取り出してしまう可能性があります。それは、ConcurrentBagが順序付けされていないと言いますが、どのように順序付けられていませんか?単一のスレッドでは、バッグはスタックのように動作します。順序付けられていないということは「リンクされたリストが好きではない」という意味ですか?ConcurrentBag <T>の実際の用途は何ですか?
ConcurrentBagの実際の使用は何ですか?
を見ていましたか?定義された注文があるか、そうでない注文があります。エルヴィスはどう死んだの? –
保存された要素の順序付けは、クライアントのビジネスのいずれにもなりません。したがって、APIの観点からは、「順序付けられていない」は常に(GetEnumeratorメソッドからの)列挙の順序を参照します。 –
「注文されていない」とは、注文に関する保証がないことを意味します。現在の実装の振る舞いは、同じスレッドが追加および削除されているときにスタックのように動作し、あるスレッドが別のスレッドのコレクションから取得するときのように動作するように見えます。しかし、私はその行動には期待していません。詳細はhttp://www.informit.com/guides/content.aspx?g=dotnet&seqNum=842を参照してください。 'ConcurrentBag'は、順序が重要でない場合、スレッドがプロデューサとコンシューマの両方になることができる場合、' ConcurrentQueue'よりも優れたパフォーマンスを提供します。 –