2


众所周知,operator [] 对于写入不是并发安全的: concurrent_vector::operator[] 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 回答