如何将C# SortedList 线程安全化是最佳方法?
- 论坛
- 如何将C# SortedList 线程安全化是最佳方法?
21 浏览
如何将C# SortedList 线程安全化是最佳方法?
我需要一个具有O(log n)检索和O(1)索引查找的数据结构。因此,SortedList
是明显的选择。
现在我想知道如何使其方法线程安全的最佳方式是什么?这是一个使用lock
的部分实现,但我想知道是否有更高效的方法?例如,如果有一个immutable
的SortedList
,我可以使用它,但我只看到提供SortedDictionary
作为不可变的。
public class ConcurrentSortedList{ private object _locker = new object(); private SortedList _list = new SortedList (); public void Add(TKey key, TValue value) { lock(_locker) { _list.Add(key, value); } } public TValue GetByIndex(int index) { lock(_locker) { return _list.Values[index]; } } }
编辑。正如下面的@Theodor指出的,多线程环境中按索引获取似乎是没有意义的,我同意在这种情况下,尝试使SortedList
线程安全是没有意义的。