我正在寻找一个线程安全的并发数据结构,我可以迭代。订单对我没关系。
我想要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>
,只需在我添加,编辑或删除对象时锁定它。但是,我不使用的对象将被阻止。我宁愿错过,即我更喜欢细粒锁。
答案 0 :(得分:0)
在IList
上创建自己的类(包装器),提供线程安全访问或尝试使用ConcurrentBag<T>