4

したがって、内側の 2 つの for ループはほとんど機能しません。最も外側のループを並列ループに変換したい。

私の質問は:

ループ内に変数がある場合、それは一時値ホルダーとして使用され、ループごとに新しい値を取ります。並列処理が開始されたときに、その変数について心配する必要がありますか?

つまり、すべてのスレッドが同じ変数を上書きするということですか?

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

並列ループの Dates 変数について心配する必要はありますか?

私の質問の形式が悪くて申し訳ありませんが、これは私の 2 番目の質問であり、そこに到達しています。

4

2 に答える 2

8

要するに:いいえ。

この変数はループ内にスコープが設定されているため、ループの反復ごとに再割り当てされます。異なるスレッド間で共有される値ではありません。

心配する必要がある変数は、ループの外側にある変数だけです。

于 2013-01-08T09:02:38.437 に答える
3

Dates各ループ反復に対してローカルになるため、各スレッドは独自のスタックにプライベート コピーを持ちます。干渉なし。

ただし、ループの外で宣言された変数には注意してください。

于 2013-01-08T09:04:16.747 に答える