假设您在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()
});
答案 0 :(得分:3)
“首选的”只是:功能正确的那个。它是否意味着记录完整操作的数量(结束)?或者开始操作的数量(开始)。除此之外:没有区别。