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

mwg9r5ms  于 2023-01-06  发布在  .NET
关注(0)|答案(3)|浏览(151)

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

更新

我发布了一个新问题来解释我当前的场景。我宁愿这样做也不愿改变原问题的整个含义。下面是新问题的the link

odopli94

odopli941#

如果两个线程同时添加项,您对“order”的期望是什么?如果您想要的只是项的集合,ConcurrentBag更合适。

flvlnr44

flvlnr442#

随机访问在从另一个线程更改的数据结构上没有多大意义。
如果你看一下并发集合,你会注意到它们的接口是专门为多线程访问而设计的,我想不出一个有用的类似列表的接口能很好地处理多线程代码。
如果元素从未移动过,那么随机多线程访问是有意义的,但这时您有一个数组。

9vw9lbht

9vw9lbht3#

早在2011年,I wrote a ConcurrentList<T> class(代码可用on GitHub),它是线程安全的,无锁的,并实现了IList<T>接口的 * 一些 *。
值得注意的是,不支持除Add之外的任何改变列表的操作;也就是说,它是一个只能追加的集合,所以InsertRemoveAt等等都不起作用。

相关问题