2017-08-06 89 views
2

比方说,我有初始化为对象threadWork是std :: vector :: clear() - 一个二维矢量线程的内部向量安全吗?

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

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

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

+3

如果没有并发访问** same **元素,则不存在数据竞争。 – StoryTeller

回答

1

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