2016-03-02 159 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

回答