线程安全枚举,在c#中添加或删除集合

时间:2016-08-31 10:22:25

标签: c# multithreading ienumerable ienumerator icollection

我在采访中遇到了一个问题我不确定我是否理解正确。它真的是实时场景吗? 但我正在尽力解释这个问题

  

创建一个要收集的类(实现IEnumerable),它将有一个数据结构(字典),它将拥有非常大的数据块。用户可以迭代这些数据。但是这个类还应该提供添加和删除项目到数据结构的选项。这么多线程都可以访问它。   因此,当一个线程迭代该集合时,其他线程可能正在添加该集合的项目。因此,迭代的线程也应检索最新添加的项目。

所以课程看起来像

1 个答案:

答案 0 :(得分:0)

从版本4.0开始.net已经提供了这种类型的集合。

看看System.Collections.Concurrent-Namespace。 并深入了解ConcurrentBagConcurrentDictionary类。