调查员和线程安全

时间:2009-10-18 06:35:19

标签: .net linq thread-safety ienumerable

只是为了确保,说我有这个代码:

this.allObjects =  [some linq query];

并且有两个方法都可以读取(不修改)这个IEnumerable,它们是否可以安全地并行调用?只是循环IEnumerable应该是安全的吗?

2 个答案:

答案 0 :(得分:1)

这取决于枚举器的实现,但在大多数情况下,是的,它是安全的。

但需要注意的是:伪代码,就像你拥有它一样,实际上并没有做任何事情(由于延迟执行)。只有在访问allObjects时(或者如果在LINQ查询中调用类似ToList()的内容),LINQ查询才会执行。

答案 1 :(得分:0)

IEnumerable<T>个实例可能没问题(虽然它确实依赖于实现)。

IEnumerator<T>个实例可能罚款(尽管再次:实施细节)。