2


operator [] は同時書き込みに対して安全ではないことが知られています: concurrent_vector::operator[] 演算子 しかし、異なるスレッドが異なるベクトル位置に書き込むことを保証するとしたらどうなるでしょうか。このように(非常に単純化された例):

concurrent_vector<double> vec;
vec.resize(100);

parallel_for(0, 100, [&] (double ind)
{
    vec[ind] = ind*ind;
}

同時に安全ですか?「そうでない」場合、なぜですか?

ありがとう

4

1 に答える 1

2

はい、異なる変数にアクセスしている場合と同じように、同時に安全です。

ildjam がコメントで指摘したように、通常std::vectorの配列でも、単純な配列でも安全です。

于 2012-03-19T21:10:53.093 に答える