并行For循环.他们等待完成吗?

Mah*_*asi 24 .net c# parallel-processing

我有两个for循环.在完成第一个循环后必须启动第二个循环.

那么,如果我使用两个Parallel.For()循环,第二个循环将在完成第一个循环后运行吗?

Ray*_*Ray 38

是.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");
Run Code Online (Sandbox Code Playgroud)

输出是

First 0
First 2
First 1
First 4
First 3
First Finished
Second 0
Second 4
Second 3
Second 2
Second 1
Second Finished
Run Code Online (Sandbox Code Playgroud)

整数的顺序会有所不同,但第二个顺序总是在第一个之后.

  • 当你想到它时也会有意义,因为该方法返回一个`ParallelLoopResult`,它只有在所有线程终止后才可用. (4认同)
  • @Mahdi谷歌吧.这意味着它可以从多个线程调用,而不会发生意外事件的风险.例如,如果它不是线程安全的,你可能会将控制台线路混杂在一起,例如`FiFrist r0st 1`.此外,如果你在不知道什么是线程安全的情况下做并行的东西,你真的需要查找它. (3认同)