我正在尝试理解如何使用PLINQ实现并行计算,考虑到延迟执行的情况。以下是一个简单的示例。
string[] words = { "believe", "receipt", "relief", "field" };
bool result = words.AsParallel().Any(w => w.Contains("ei"));
使用LINQ,我期望执行到“receipt”值时返回true,而不需要执行其余值的查询。
如果我们以并行方式执行此操作,“relief”的评估可能已经开始,而“receipt”的结果尚未返回。但是一旦查询知道“receipt”将导致true结果,其他线程会立即停止吗?
在我的情况下,这很重要,因为“any”测试可能非常昂贵,我希望释放处理器以执行其他任务。
Partitioner<T>
,它开始将你的工作安排给多个线程。最终累计结果直到被请求之前都不会返回,但是处理会在请求元素之前发生。(如果您请求结果的元素1,则元素1、2、3和4可能都会被调度,并立即开始"工作"...) - Reed Copsey