假设我有一个容器C,其C的迭代器在C.insert()时没有失效,是否可以在执行并发insert()时在容器上安全地执行std :: find()?也就是说,是否可以保证找到匹配的元素或C :: end(),而忽略了插入的元素可能匹配但std :: find()给我C :: end()的事实?
答案 0 :(得分:2)
不。尽管迭代器不会因您的更改操作而使迭代器无效,但它仍然是一个更改操作,并且没有定义任何标准容器来安全地在一个线程中进行读取而在另一个线程中进行更改。请记住,您的容器仍然存在“内部情况”,各种内部状态都可能与这两种操作有关。