2

我需要 a 的线程安全版本SortedList<T,U>,但与它的通用形式不同,非通用形式似乎没有Synchronized功能。我可以使用不同的技巧来获得线程安全版本吗?还是我必须求助于lock (SyncRoot)手动使用?

4

1 回答 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 回答