Parallel.foreachを使用して、ブロックしているコレクションのアイテムを使用しています。これが行われると、デフォルトでパーティション分割が発生することを私は知っています。これがBlockingCollectionのロック/ブロックにどのように影響するかをもっと理解したいと思います。スレッドが消費しているときに、ブロッキングコレクションの追加操作がブロックされる可能性がある場合はありますか?
ありがとう
Parallel.foreachを使用して、ブロックしているコレクションのアイテムを使用しています。これが行われると、デフォルトでパーティション分割が発生することを私は知っています。これがBlockingCollectionのロック/ブロックにどのように影響するかをもっと理解したいと思います。スレッドが消費しているときに、ブロッキングコレクションの追加操作がブロックされる可能性がある場合はありますか?
ありがとう
可能性があります(方法:BlockingCollectionから個別にアイテムを追加および取得する方法を参照)
この最初の例は、コレクションが一時的に空(取得時)または最大容量(追加時)のいずれかであるか、指定されたタイムアウト期間が経過した場合に操作がブロックされるように、アイテムを追加および取得する方法を示しています。最大容量でのブロックは、コンストラクターで指定された最大容量でBlockingCollectionが作成された場合にのみ有効になることに注意してください。
したがって、コレクションが最大容量の場合、追加はブロックされます。
foreachループでアイテムを消費する場合、アイテムの追加はこの間にブロックされませんが、注意する必要があることがいくつかあります。