C#并行数据结构,可以通过它进行迭代
本文关键字:迭代 可以通过 并行 数据结构 | 更新日期: 2023-09-27 18:30:02
我正在寻找一个线程安全的并发数据结构,我可以迭代它。订单对我来说无关紧要。
我想要Objects
的Collection
。
一个线程将在该集合中迭代,连续调用每个对象Object.Add(Item)
例如:
Collection<Object> collection = new Collection<Object>();
//Run On New thread
while(tasksAvaliable)
{
foreach(var item in collection)
{
item.Add(task); //I get tasks from a Concurrent Queue
}
}
在另一个线程/计时器中,它将尝试从集合中添加、编辑、删除这些对象。(但频率低于其他线程)
我可以使用什么收藏?我目前正在使用一个并发的Bag。但我不确定当我在它上使用foreach时,集合中的每个Object
都会收到我在foreach循环中提供的Task
。
我在想,我也可以使用普通的List<Object>
,在添加、编辑或删除对象时将其锁定。但是,我不使用的对象会被阻止。我宁愿错过哪个。
在IList
上创建自己的类(包装器),该类提供线程安全访问或尝试使用ConcurrentBag<T>