std :: vector :: clear() - 一个二维矢量线程的内部向量是否安全?

时间:2017-08-06 21:16:18

标签: c++ multithreading vector data-race

假设我有一个对象threadWork初始化为:

vector< vector<myType> > threadWork(N_THREADS, vector<myType>());

然后我部署N_THREADS个线程,每个线程通过vector::push_back()执行写入vector<myType>的单独元素(自己的threadWork对象)。

然后,一个线程在其vector::clear()元素上调用threadWork。 这是否会使其他线程写入其元素无效? 即vector::clear()可以调用threadWork的一个元素 threadWork的其他元素的内存分配, 这样一个线程可能会写入无效地址?

1 个答案:

答案 0 :(得分:1)

这完全没问题。改变外部向量的元素不会以任何方式影响其他元素。