【发布时间】:2013-08-23 01:20:40
【问题描述】:
我想知道在这种情况下是否需要互斥锁。
我有一个由两个线程操作的向量my_vector。
线程 1:
my_vector.push_back(element)
// send a request for the element, the subject of which thread 2 will receive
// continues
线程 2:
// receive element
iter = my_vector.find(element) // This **will** be found in the vector
// do stuff using iter
我的问题是:线程 1 可能会向 my_vector 添加更多元素,而线程 2 正在使用 iter... 但这有关系吗?如果只在vector的末尾添加item,那么查看中间元素的迭代器肯定不会受到影响吗?
感谢您对此的任何想法。
【问题讨论】:
-
如果 push_back 导致向量超出其容量,向量将重新分配到一个新的、更大的缓冲区,移动旧数据,然后删除旧缓冲区。因此,如果发生这种情况,您的旧迭代器会指向已删除的数据。
标签: c++ multithreading vector mutex