假設我有一個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維矢量二維STL矢量線程安全嗎?
vector< vector< int> > v
那麼線程1開V [0]操作時,像
v[0].push_back(x)
螺紋2上V [1]操作時,
v[1].remove(y)
等等。
此操作是否線程安全?我想這是因爲v[0]
和v[1]
是指向不同內存地址的單獨指針?這兩個指針是否會最終重疊?
使用Intel提供的concurrent_vector。
v [0]和v [1]是不同的載體,和訪問不同的元件時,[]操作者是安全的。 http://www.cplusplus.com/reference/vector/vector/operator[]/ – user234461
但是,由於v [0]和v [1]在內存中是相鄰的,因此重複訪問它們(我的意思是對象本身不是它們的數據)來自兩個不同的線程對於併發性能可能不好。 – user234461
你能解釋更多關於併發性能的原因嗎?因爲它們在緩存中,對於數據局部性來說不好嗎? – cxs1031