【发布时间】:2012-01-06 10:09:59
【问题描述】:
我有两个 for 循环。第二个循环必须在完成第一个循环后开始。
那么,如果我使用两个Parallel.For() 循环,第二个循环会在完成第一个循环之后运行吗?
【问题讨论】:
标签: c# .net parallel-processing
我有两个 for 循环。第二个循环必须在完成第一个循环后开始。
那么,如果我使用两个Parallel.For() 循环,第二个循环会在完成第一个循环之后运行吗?
【问题讨论】:
标签: c# .net parallel-processing
是的。 Parallel.For 在所有操作完成之前不会返回。
如果你跑了
Parallel.For(0, 5, i => Console.WriteLine("First {0}", i));
Console.WriteLine("First Finished");
Parallel.For(0, 5, i => Console.WriteLine("Second {0}", i));
Console.WriteLine("Second Finished");
输出是
First 0
First 2
First 1
First 4
First 3
First Finished
Second 0
Second 4
Second 3
Second 2
Second 1
Second Finished
整数的顺序会有所不同,但第二个总是在第一个之后。
【讨论】:
ParallelLoopResult,它只有在所有线程终止后才可用。
FiFrist r0st 1。此外,如果您在不知道什么是线程安全的情况下进行并行处理,那么您真的需要查一下。