在并行循环开始结束时Interlocked.Increment?

时间:2014-08-15 07:31:09

标签: c# c#-4.0 parallel-processing

假设您在C#中有一个并行循环,并且想要使用:Interlocked.Increment

另外,假设你的循环中有一个繁重的过程。你是否认为在那个繁重的过程之前或之后放置Interlocked.Increment会有什么不同?

换句话说,更优选以下哪项?

更新:假设我们的好坏标准是整体速度。

Prog1:

int iter = 0; 
Parallel.For(...{ 
HeavyProcess()
Interlocked.Increment(iter); 
}); 

Prog2:

int iter = 0; 
Parallel.For(...{ 
Interlocked.Increment(iter); 
HeavyProcess()
});

1 个答案:

答案 0 :(得分:3)

“首选的”只是:功能正确的那个。它是否意味着记录完整操作的数量(结束)?或者开始操作的数量(开始)。除此之外:没有区别。