如果迭代器没有因插入而无效,则使用std::find和C::insert()是线程安全的
Is using std::find and C::insert() thread safe if iterators are not invalidated by insert
假设我有一个容器C,其迭代器在C.insert((时没有失效,那么在执行并发insert(((时,我能安全地在容器上执行std::find((吗?也就是说,我是否保证找到一个匹配的元素或C::end((,忽略插入的元素可能匹配,但std::find((给了我C::end((?
否。尽管迭代器不会因您的变异操作而无效,但它仍然是一个变异操作,并且当变异操作在另一个线程中发生时,没有一个标准容器被定义为可以在一个线程内安全读取。请记住,容器中仍然存在各种内部状态的"内部",这两种操作都可能涉及这些内部状态。
相关文章:
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- OpenMP卸载说'fatal error: could not find accel/nvptx-none/mkoffload'
- Insert函数不适用于2 if语句C++
- 使用.find函数在c++中查找字符和另一个字符之间的大小
- 如何在C++向量中奇数元素前面加上值-1,我在使用insert函数时遇到了问题
- 在 QVector<std::unique_ptr 上使用 std::find<Type>>
- 错误"Could not find Boost"(缺少:上下文标头)
- /usr/bin/ld: cannot find -lc++
- std::find,返回所有找到的值的替代方法,而不仅仅是存在重复的向量的第一个值
- 使用 find 解析文件会给出不同文件的奇怪结果
- 为什么 gcc 会给我可能未初始化的警告 deque::insert 带有过滤范围
- 在 ifcondition al中 find() C++ STL 中的 == a.end() 有什么用?
- Cannot find -lglad
- "Cannot find -l<directory>"错误 - CMake
- 为什么在向量上使用 std::find() 时会出现错误?
- 为什么映射插入和 map.find() 的单次迭代比插入和 map.find() 的两次单独迭代慢得多
- C++ find() 在存储为变量时返回不同的值
- set::find 查找不存在的元素
- 如果迭代器没有因插入而无效,则使用std::find和C::insert()是线程安全的
- C++ unordered_map SIGSEGV on find() or insert()