同じ BlockingCollection にアクセスする C# アプリケーションで 2 つのスレッドを使用しています。これは正常に動作しますが、2 つのスレッドが同じ値を取得するように、最初の値を 2 回取得したいと考えています *.
数秒後、両方のスレッドの currentIndex をポーリングし、すべての値 < インデックスを削除します。たとえば、スレッドの currentIndex の最小値が 5 の場合、アプリケーションはキュー内のインデックス 0 ~ 5 のアイテムを削除します。別の解決策は、すべてのスレッドが値を処理した場合に、キュー内の値を削除することです。
どうすればこれを達成できますか? 別のタイプのバッファが必要だと思います..?
前もって感謝します!
* .Take() がスレッド 1 によって呼び出された場合、アイテムはコレクションから削除され、スレッド 2 は同じアイテムを再び取得できなくなります。
アップデート:
データをバッファに保存したいので、たとえばスレッド1がデータをHDDに保存し、スレッド2が(同じ)データを分析します(並行)。