2017-08-06 53 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

這完全沒問題。更改外部向量的元素不會以任何方式影響其他元素。