我需要 a 的线程安全版本SortedList<T,U>
,但与它的通用形式不同,非通用形式似乎没有Synchronized
功能。我可以使用不同的技巧来获得线程安全版本吗?还是我必须求助于lock (SyncRoot)
手动使用?
问问题
1715 次
1 回答
2
简短的回答:不,你必须求助lock
。
即使在新的命名空间中System.Collections.Concurrent
你有线程安全的集合,线程安全版本SortedList<T, U>
也不存在。如果您需要 aSortedList<T, U>
使用 alock
或 a ReadWriterLockSlim
(如果适用)来保护每个调用,或者,为SortedList<T, U>
(以相同的方式Synchronized()
)创建一个线程安全的包装器。
更长的答案:不,您没有准备好任何东西,但是您可以一起使用OrderablePartitioner<TSource>
(每次提取一个项目)和ConcurrentBag<T>
. 坦率地说,我不知道这种策略是否有任何投资回报率,因为如果您不需要分区器,那么您只需增加不应该的复杂性。
于 2012-10-10T18:35:48.623 回答