asp.net - parallel.for如何工作

时间:2011-03-29 06:09:54

标签: asp.net .net-4.0 parallel-processing task-parallel-library

parallel.for如何工作。它是否为每个循环调用线程/将循环划分为部分并并行执行它们?如果确实如此,我们可以确保与正常循环相同的结果吗?我测试了性能,它确实使用了多核处理器。但我想知道内部工作是如何工作的

2 个答案:

答案 0 :(得分:7)

Parallel.For将工作分区为多个并发迭代。默认情况下,它使用默认任务调度程序来安排迭代,这实际上使用当前线程以及许多线程池线程。有一些重载将允许您更改此行为。

并行循环可能看起来与常规循环非常相似,但实际上存在许多重要差异。首先,不保证迭代的顺序。即代码不能承担任何特定的顺序。这样做会导致不可预测的结果。

此外,由于代码可能在多个线程上运行,因此异常处理与常规for循环完全不同。 Parallel.For将捕获线程的异常,并将这些异常作为AggregateException实例中的内部异常重新编组回调用线程。

有关其他详细信息,请通过Microsoft模式和实践检查Parallel Programming with Microsoft .NET

答案 1 :(得分:2)

parallel.for循环并行地在不同进程中运行循环的迭代。如果迭代彼此独立,则只能使用此方法。只有迭代是独立的,您才可以假设并行和非并行for循环将产生相同的结果。