std::vector::clear()-ing 二维向量线程的内部向量是否安全?
Is std::vector::clear()-ing an inner vector of a 2-D vector thread safe?
假设我有一个对象 threadWork
初始化为:
vector< vector<myType> > threadWork(N_THREADS, vector<myType>());
然后我部署 N_THREADS
个线程,每个线程通过 vector::push_back()
执行写入 threadWork
的单独元素(它自己的 vector<myType>
对象)。
一个线程然后在其 threadWork
的元素上调用 vector::clear()
。
这是否会使其他线程对其元素的写入无效?
即 vector::clear()
可以调用 threadWork
改变的一个元素
threadWork
的其他元素的内存分配,
结果线程可能正在写入无效地址?
这完全没问题。改变外部向量的一个元素不会以任何方式影响其他元素。
假设我有一个对象 threadWork
初始化为:
vector< vector<myType> > threadWork(N_THREADS, vector<myType>());
然后我部署 N_THREADS
个线程,每个线程通过 vector::push_back()
执行写入 threadWork
的单独元素(它自己的 vector<myType>
对象)。
一个线程然后在其 threadWork
的元素上调用 vector::clear()
。
这是否会使其他线程对其元素的写入无效?
即 vector::clear()
可以调用 threadWork
改变的一个元素
threadWork
的其他元素的内存分配,
结果线程可能正在写入无效地址?
这完全没问题。改变外部向量的一个元素不会以任何方式影响其他元素。