代码之家  ›  专栏  ›  技术社区  ›  Matt

优化.net3.5中的独立foreach迭代

  •  2
  • Matt  · 技术社区  · 15 年前

    假设我有

    foreach(int x in xs[]) // xs is an array of int
    {
    x++;
    }
    

    每次通过前臂都是独立的。 有没有一种快速的方法来指示clr在一个单独的线程上执行每一个操作,或者通过本机并行来加快速度?

    也许它已经知道这么做了。

    我知道我可以创建线程并启动它们,但是如果我可以设置一个属性或标志来为我处理它的话,这会很好。

    我的实际代码更复杂,但是通过foreach的每个迭代在迭代之间也没有影响。

    类似的东西

    [parallelize maxThreads=5]
    foreach(int x in xs[]) // xs is an array of int
    {
    x++;
    }
    
    1 回复  |  直到 14 年前
        1
  •  12
  •   Robert Harvey    14 年前

    你可以试试 Parallel.For 来自任务并行库。如果您获得正确的粒度,这将非常有效。有关详细信息,请参阅以下文章:

    优化多核机器的托管代码
    http://msdn.microsoft.com/en-us/magazine/cc163340.aspx

    .NET 3.5 SP1的任务并行库 can be downloaded from this page . 这里是一个 direct link.