gpt4 book ai didi

c++ - 如果不同的线程总是使用不同的键,它们可以插入到映射中吗?

转载 作者:搜寻专家 更新时间:2023-10-31 00:33:50 25 4
gpt4 key购买 nike

我正在尝试为一个对象设计一个消息队列。有一组 X 线程都可以向这个对象发送消息(稍后处理)。如果我有一个 std::map<thread_id_t, message> ,这个线程安全吗,假设线程 1 只添加 key 为 1 的消息,线程 2 向 key 2 等添加消息?

最佳答案

std::map 对于多个同时写入者来说不是线程安全的。

STL 映射不是线程安全的众多原因之一是,STL 映射的底层实现是一个 AVL 树,在多次插入后需要每隔一段时间重新平衡一次。重新平衡 map 会影响多个节点,并且绝对不是线程安全的。

引用优秀Dr. Dobb's article on lock-free data structures如果您对此感兴趣。

关于c++ - 如果不同的线程总是使用不同的键,它们可以插入到映射中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27829806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com