为什么没有并发列表<T>



新的命名空间System.Collections.Concurrent包含字典、队列和堆栈等类的并发集合。有人知道为什么没有ConcurrentList吗?

更新

我发布了一个新问题来解释我目前的情况。我更愿意这样做,而不是改变原来问题的整个意义。这是新问题的链接

如果两个线程同时添加条目,您对"顺序"的期望是什么?如果您想要的只是一个项的集合,那么ConcurrentBag更合适。

对于从另一个线程更改的数据结构,随机访问没有多大意义。

如果你看一下并发集合,你会注意到它们的接口是专门为多线程访问而设计的。我想不出一个有用的类似列表的接口,可以很好地与多线程代码一起工作。

如果元素从未移动,那么随机多线程访问是有意义的,但之后你有一个数组。

早在2011年,我就写了一个ConcurrentList<T>类(代码可在GitHub上获得),它是线程安全的,无锁的,并实现了一些IList<T>接口。

值得注意的是,除了Add之外,不支持任何改变列表的操作;也就是说,它是一个只能追加的集合。所以InsertRemoveAt等都不起作用

相关内容

  • 没有找到相关文章

最新更新