System.Collections.Generic.SortedList的同步版本?

时间:2012-10-10 18:23:09

标签: c# .net

我需要SortedList<T,U>的线程安全版本,但与generic form不同,non-generic form似乎没有Synchronized功能。我可以用一个不同的技巧来获得一个线程安全的版本吗?或者我是否必须手动使用lock (SyncRoot)

1 个答案:

答案 0 :(得分:2)

简短回答:您不必诉诸lock

即使在新的命名空间System.Collections.Concurrent中你有线程安全的集合,SortedList<T, U>的线程安全版本也不存在。 如果您需要使用SortedList<T, U>lock(如果适用)保护对ReadWriterLockSlim的每次调用,或者替代地为SortedList<T, U>创建线程安全包装器(以同样的方式Synchronized()。)

更长的答案:你没有准备好任何东西但是你可以同时使用OrderablePartitioner<TSource>(每次提取一个项目)和ConcurrentBag<T>来获得相同的结果。坦率地说,我不知道这个策略是否有任何投资回报率,因为如果你不需要分区器,那么你只需要增加不应该的东西的复杂性。