【发布时间】:2014-09-09 04:49:06
【问题描述】:
我看到 ConcurrentBag 和 Parallel.ForEach 被用于另一个问题。现在我想知道如果我使用常规 foreach 而不是 Parallel.ForEach 从 ConcurrentBag 读取数据,它是否仍然是线程安全的。
因此,即使其他线程正在向 ConcurrentBag 添加数据和从中删除数据,我希望在特定线程中遍历包中的所有项目(它甚至可以是该包的快照,因为它不必100% 最新)并将找到的数据用于其他用途。
所以我的问题是,在不破坏 ConcurrentBag 的线程安全的情况下,这里的普通 foreach 是否可行,还是我必须使用 Parallel.ForEach?
【问题讨论】:
标签: c# multithreading foreach parallel-processing parallel.foreach