【发布时间】:2012-12-07 13:24:55
【问题描述】:
我有以下代码:
string someVariable;
Parallel.For(0, maxCount, count =>
{
Parallel.For(0, dimension, row =>
{
Parallel.For(0, dimension, col =>
{
someVariable = count + " " + row + " " + col;
DoSomethingIndependent(someVariable);
});
});
});
所以我的问题是:在循环之外声明的字符串变量是否独立于每次迭代,或者循环的并行执行是否会因彼此之间的迭代而中断?我猜想该变量同时用于并行线程,因为它给了我一个“未处理的异常”。做这个的最好方式是什么?也许为每个并行迭代使用一个字符串数组?
提前致谢!
【问题讨论】:
-
之后还需要
someVariable吗?否则你应该在内部循环中声明它(var someVariable = count ...)。 -
@CodeCaster - 不,之后我不需要它。这个声明会显着减慢代码的执行速度吗?好吧,我想这比声明一个数组要好。没想到会这样,谢谢建议。我会试试的。
-
谢谢,现在它工作正常,我很高兴没有性能差异。
标签: c# variables for-loop parallel-processing declaration