concurrent_vector的安全性

时间:2012-03-19 21:06:57

标签: c++ concurrency ppl


众所周知,operator []不能同时安全地写入: concurrent_vector::operator[] Operator 但是,如果我保证不同的线程将写入不同的向量位置,该怎么办? 像这样(非常简化的例子):

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

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

是否同时安全?如果'不'那么为什么?

感谢

1 个答案:

答案 0 :(得分:2)

是的,它同时是安全的,因为它就像访问不同的变量一样。

正如ildjam在评论中所指出的那样,即使使用常规std::vector也是安全的,或者,让我添加简单数组。