众所周知,operator []不能同时安全地写入:
concurrent_vector::operator[] Operator
但是,如果我保证不同的线程将写入不同的向量位置,该怎么办?
像这样(非常简化的例子):
concurrent_vector<double> vec;
vec.resize(100);
parallel_for(0, 100, [&] (double ind)
{
vec[ind] = ind*ind;
}
是否同时安全?如果'不'那么为什么?
感谢
答案 0 :(得分:2)
是的,它同时是安全的,因为它就像访问不同的变量一样。
正如ildjam在评论中所指出的那样,即使使用常规std::vector
也是安全的,或者,让我添加简单数组。