2016-03-02 160 views
0

假設我有一個2維矢量二維STL矢量線程安全嗎?

vector< vector< int> > v 

那麼線程1開V [0]操作時,像

v[0].push_back(x) 

螺紋2上V [1]操作時,

v[1].remove(y) 

等等。

此操作是否線程安全?我想這是因爲v[0]v[1]是指向不同內存地址的單獨指針?這兩個指針是否會最終重疊?

+2

v [0]和v [1]是不同的載體,和訪問不同的元件時,[]操作者是安全的。 http://www.cplusplus.com/reference/vector/vector/operator[]/ – user234461

+0

但是,由於v [0]和v [1]在內存中是相鄰的,因此重複訪問它們(我的意思是對象本身不是它們的數據)來自兩個不同的線程對於併發性能可能不好。 – user234461

+0

你能解釋更多關於併發性能的原因嗎?因爲它們在緩存中,對於數據局部性來說不好嗎? – cxs1031

回答