新的命名空间 System.Collections.Concurrent 包含字典、队列和堆栈以及其他类的并发集合。有人知道为什么没有 ConcurrentList 吗?
更新
我发布了一个新问题,解释了我当前的情况。我更喜欢改变原始问题的整体意义。这是新问题的链接。
新的命名空间 System.Collections.Concurrent 包含字典、队列和堆栈以及其他类的并发集合。有人知道为什么没有 ConcurrentList 吗?
我发布了一个新问题,解释了我当前的情况。我更喜欢改变原始问题的整体意义。这是新问题的链接。
如果两个线程同时添加项目,您对“订单”有什么期望? 如果您想要的只是一组项目,则ConcurrentBag更合适。
随机访问对从另一个线程更改的数据结构没有多大意义。
如果您查看并发集合,您会注意到它们的接口是专门为多线程访问而设计的。我想不出一个可以很好地与多线程代码配合使用的有用的类似列表的接口。
如果元素从不移动,随机多线程访问是有意义的,但是你有一个数组。
早在 2011 年,我写了一个ConcurrentList<T>
类(代码可在 GitHub 上找到),它是线程安全的、无锁的,并实现了一些IList<T>
接口。
Add
值得注意的是,不支持任何改变列表的操作;即,它是一个仅附加的集合。所以Insert
,RemoveAt
等不工作。