C#并发数据结构,可以通过迭代

时间:2014-11-11 11:04:23

标签: c# multithreading collections concurrency

我正在寻找一个线程安全的并发数据结构,我可以迭代。订单对我没关系。

我想要Collection Objects

一个线程将遍历此集合,不断调用每个对象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
  }
 }

在另一个线程/计时器中,它将尝试尝试添加,编辑,从集合中删除这些对象。 (但不如其他线程频繁)

我可以使用什么系列?我目前正在使用并发包。但是我不确定当我使用foreach时,集合中的每个Object都会收到我在foreach循环中提供的Task

我在想,或者我可以使用普通的List<Object>,只需在我添加,编辑或删除对象时锁定它。但是,我不使用的对象将被阻止。我宁愿错过,即我更喜欢细粒锁。

1 个答案:

答案 0 :(得分:0)

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