如何将C# SortedList 线程安全化是最佳方法?

21 浏览
0 Comments

如何将C# SortedList 线程安全化是最佳方法?

我需要一个具有O(log n)检索和O(1)索引查找的数据结构。因此,SortedList是明显的选择。

现在我想知道如何使其方法线程安全的最佳方式是什么?这是一个使用lock的部分实现,但我想知道是否有更高效的方法?例如,如果有一个immutableSortedList,我可以使用它,但我只看到提供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线程安全是没有意义的。

0