Multithreading 二维STL向量线程安全?

Multithreading 二维STL向量线程安全?,multithreading,c++11,stl,thread-safety,stdvector,Multithreading,C++11,Stl,Thread Safety,Stdvector,假设我有一个二维向量 vector< vector< int> > v 线程2在v[1]上运行 v[1].remove(y) 等等 这个操作是线程安全的吗?我想是的,因为v[0]和v[1]是指向不同内存地址的独立指针?这两个指针最终会重叠吗 使用英特尔提供的并发_向量 v[0]和v[1]是不同的向量,当访问不同的元素时,[]操作符是安全的。但是,由于v[0]和v[1]在内存中是相邻的,因此从两个不同的线程重复访问它们(我的意思是对象本身而不是它们的数据)可能对并

假设我有一个二维向量

  vector< vector< int> > v
线程2在v[1]上运行

 v[1].remove(y)
等等


这个操作是线程安全的吗?我想是的,因为
v[0]
v[1]
是指向不同内存地址的独立指针?这两个指针最终会重叠吗

使用英特尔提供的并发_向量


v[0]和v[1]是不同的向量,当访问不同的元素时,[]操作符是安全的。但是,由于v[0]和v[1]在内存中是相邻的,因此从两个不同的线程重复访问它们(我的意思是对象本身而不是它们的数据)可能对并发性能有害。错误共享。”v'是指向包含向量对象v[0]、v[1]、….的连续内存块的向量对象。由于内存是连续的,所以v[0]和v[1]位于同一缓存线中(在不同的内核中)。修改将使缓存线无效。它们自己改变v[0]和v[1]——它们改变内部长度字段。由于v[0]和v[1]在内存中彼此相邻,这将导致错误共享。你在v[0]中也错了。推回将更改v[0]指向的内存,尽管这与此无关-否则它将如何将参数复制到向量中?这非常有帮助!谢谢我想要无锁,所有TBB并发数据结构都包含锁。
 v[1].remove(y)