C#并行数据结构,可以通过它进行迭代

本文关键字:迭代 可以通过 并行 数据结构 | 更新日期: 2023-09-27 18:30:02

我正在寻找一个线程安全的并发数据结构,我可以迭代它。订单对我来说无关紧要。

我想要ObjectsCollection

一个线程将在该集合中迭代,连续调用每个对象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>,在添加、编辑或删除对象时将其锁定。但是,我不使用的对象会被阻止。我宁愿错过哪个。

C#并行数据结构,可以通过它进行迭代

IList上创建自己的类(包装器),该类提供线程安全访问或尝试使用ConcurrentBag<T>