【问题标题】:Parallel.For looping on the same valueParallel.For循环相同的值
【发布时间】:2012-03-15 15:41:18
【问题描述】:

我正在尝试做一个简单的平行。对于和它似乎一遍又一遍地得到相同的“i”。
我的代码是:

String[] str = new String[10000];

Parallel.For(0,10000, i=>

{

if(str[i] == string.Empty)

   str[i] = "ok";

else

   str[i] = "SameValue";

});

我希望它永远不会变成“其他”

【问题讨论】:

  • 我发现这段代码有两个问题。它像罪恶一样丑陋。您的 If 语句也总是返回 false。除非 Parallel.For 增加 i 的值,这可能解释了它没有改变的原因。您的问题令人困惑,不完全确定您所说的“相同的我一遍又一遍”是什么意思

标签: c# for-loop parallel-processing


【解决方案1】:

string.Empty 不等于 null,将 if 条件更改为

if (String.IsNullOrEmpty(str[i]))

【讨论】:

    【解决方案2】:

    我希望它永远不会变成“其他”

    错误 - 字符串数组元素使用 null(它们作为引用类型的默认值)初始化 - 而不是 string.Empty。因此只有 else 部分会被执行。

    您可以通过在if 语句上设置断点来轻松验证这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多