3

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

4

3 回答 3

3

扩展方法不会添加或删除任何线程安全。但是您不能真正忽略迭代集合永远不是线程安全的,无论您是显式执行还是让 Linq 执行。您必须确保没有其他线程可以同时修改该集合。

请注意,由于其延迟执行行为,这在 Linq 中特别棘手。

于 2012-05-09T14:08:29.580 回答
0

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

此类型的任何public staticShared在 Visual Basic 中)成员都是线程安全的

如果您将它们与线程安全参数(即)一起使用,ConcurrentDictionary应该没有任何问题。

于 2012-05-09T10:16:04.227 回答
-1

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

于 2012-10-16T06:31:29.437 回答