根据C++的std::map的文档说明,插入数据后不会导致迭代器和引用失效, 那么一个线程向一个std::map插入数据,而别一个线程向同一个std::map查找数据,这个std::map不加锁,是否会出现问题?
deepseek的说法如下:
用户可能认为,因为迭代器不会失效,所以查找线程不会被中断。但实际上,插入操作可能修改内部结构,导致查找线程看到中间状态,破坏map的不变性。比如,红黑树的旋转操作可能会临时改变节点链接,此时查找可能会错误地访问节点。
大佬们是怎么理解文档所说:插入数据后不会导致迭代器和引用失效? 难道文档所说“插入后” 很容易让我们这些小白忽略,插入时会导致问题!!!
--
FROM 210.13.68.*