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