のスレッドセーフバージョンが必要ですSortedList<T,U>
が、その汎用フォームとは異なり、非汎用フォームには機能がないようSynchronized
です。スレッドセーフバージョンを取得するために使用できる別のトリックはありますか?または、lock (SyncRoot)
手動で使用する必要がありますか?
1715 次
1 に答える
2
簡単な答え:いいえ、頼る必要はありませんlock
。
新しい名前空間System.Collections.Concurrent
にスレッドセーフなコレクションがある場合でも、のスレッドセーフバージョンはSortedList<T, U>
ありません。への各呼び出しをまたは(該当する場合)で保護する必要がある場合SortedList<T, U>
、または代わりに、 (同じ方法で)のスレッドセーフラッパーを作成する必要がある場合。lock
ReadWriterLockSlim
SortedList<T, U>
Synchronized()
より長い答え:いいえ、準備はできていませんが、OrderablePartitioner<TSource>
(一度に1つのアイテムを抽出するために)一緒に使用して同じ結果を達成できますConcurrentBag<T>
。率直に言って、この戦略にROIがあるかどうかはわかりません。なぜなら、パーティショナーが必要ない場合は、単に複雑さを追加するだけでよいからです。
于 2012-10-10T18:35:48.623 に答える