Sam*_*ett 3 c++ multithreading std thread-safety
我正在尝试为一个对象设计一个消息队列。有一组 X 线程都可以向该对象发送消息(稍后处理)。如果我有一个std::map<thread_id_t, message>,这个线程安全吗?假设线程 1 仅添加密钥为 1 的消息,线程 2 添加到密钥 2 等消息?
std::map对于多个同时写入者来说不是线程安全的。
STL映射不是线程安全的众多原因之一是STL映射的底层实现是AVL树,在多次插入后每隔一段时间就需要重新平衡一次。重新平衡地图会影响多个节点,并且绝对不是线程安全的。
如果您对其中任何内容感兴趣,请参阅Dobb 博士关于无锁数据结构的优秀文章。
| 归档时间: |
|
| 查看次数: |
3637 次 |
| 最近记录: |