concurrent_vector的安全性

Safety of concurrent_vector

本文关键字:安全性 vector concurrent      更新时间:2023-10-16


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

concurrent_vector<double> vec;
vec.resize(100);
parallel_for(0, 100, [&] (double ind)
{
    vec[ind] = ind*ind;
}

它同时安全吗?如果不是,为什么

感谢

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

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