【发布时间】:2013-03-20 16:15:28
【问题描述】:
我理解 LINQ 中的延迟执行,如下所述: What are the benefits of a Deferred Execution in LINQ?
但是,延迟执行可能会导致错误,尤其是在多线程场景中,例如。对锁外的共享集合执行的评估。当返回延迟评估的方法嵌套在几个方法层深处时,它会变得很难(至少对我而言)记住或跟踪以便我适当地锁定。
省略无限序列等特殊情况(例如斐波那契)并假设集合的过滤被认为是完整的(即消费者不太可能进一步过滤结果),这将被认为是“最佳方法" 当从一个方法返回一个 IEnumerable 的集合时——它应该已经被评估还是延迟?
注意:“最佳方法”可以根据其他一些措施的效率/代码安全性来定义,只需在您的回复中进行验证。我想知道社区是如何做到的。
后续问题:在方法名称中明确声明结果是否被评估或延迟是否有意义?
【问题讨论】:
标签: multithreading linq deferred-execution