System.Collections.Concurrent集合上的扩展方法是线程安全的吗?

时间:2012-05-09 09:53:18

标签: .net extension-methods concurrentdictionary

在ConcurrentDictionary类上有几个扩展方法,因为它实现了IEnumerable接口。这些方法(例如First,Sum,Take等)本质上是线程安全的吗?

3 个答案:

答案 0 :(得分:3)

扩展方法不添加或删除任何线程安全性。但你无法忽视迭代一个集合永远不是线程安全的,无论你是明确地做还是让Linq这样做。您必须确保没有其他线程可以同时修改集合。

请注意,由于执行行为延迟,这在Linq中非常棘手。

答案 1 :(得分:0)

Linq-To-Objects扩展方法在System.Linq.Enumerable上实现为静态方法,MSDN声明它们都是线程安全的:

  

此类型的任何public static(Visual Basic中的Shared)成员都是   线程安全

如果您使用线程安全参数(which ConcurrentDictionary is),则不应该有任何问题。

答案 2 :(得分:-1)

现在您可以使用在线程安全的.Net 4.0中引入的高级并发集合。 这真是太棒了。 无需管理锁或任何东西。