【发布时间】:2014-05-05 14:13:45
【问题描述】:
我在很多文献中读到 ConcurrentBag 速度更快,因为同步开销更少。在内部为每个添加项目的线程创建一个单独的数据存储,因此它不必处理同步。如果我从中提取数据,它将从该特定线程的数据存储中提取数据。如果不存在,它将从其他线程的队列中窃取。我不明白的部分是在大多数正常情况下,它不会是相同的线程提取数据和窃取本质上比正常同步慢得多,那怎么能说它更快。
例如,如果我有一个生产者消费者模式,我不关心一些生产者线程将数据添加到 ConcurrentBag 和一些其他线程将其出队,我的性能将受到显着影响,因为它永远不会是同一个线程拉数据作为生产者线程输出,但我看到与应用程序相同的示例。我在这里遗漏了什么吗?
【问题讨论】:
标签: .net multithreading c#-4.0