4

所以我有 3 个嵌套的 for 循环,内部的两个循环做的很少。我想将最外面的循环转换为并行循环。

我的问题是:

如果我在循环中有一个变量,则该变量用作临时值持有者并在每个循环中采用一个新值。当并行开始时我需要担心那个变量吗?

我的意思是所有线程都会覆盖同一个变量吗?

 for (int i = 0; i < persons.number; i++) //Loop all the people
    var Dates = persons[i].Appointments.bydate(DateStep);

我需要担心并行循环中的 Dates 变量吗?

抱歉我的问题格式不正确,但这只是我的第二个问题,我要到那里了。

4

2 回答 2

8

简而言之:没有。

因为这个变量是在循环内限定的,所以无论如何都会为循环的每次迭代重新分配它。它不是在不同线程之间共享的值。

您应该担心的唯一变量是循环之外的变量。

于 2013-01-08T09:02:38.437 回答
3

Dates将是每个循环迭代的本地,因此每个线程将在其自己的堆栈上拥有一个私有副本。没有干扰。

不过要小心在循环外声明的变量。

于 2013-01-08T09:04:16.747 回答