asp.net - parallel.for如何工作

Ank*_*kit 7 asp.net parallel-processing .net-4.0 task-parallel-library

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

Bri*_*sen 7

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

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

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

有关其他详细信息,请通过Microsoft模式和实践检查并行编程与Microsoft .NET.