我正在尝试为对象设计消息队列。有一组X线程可以全部向该对象发送消息(待稍后处理)。如果我有一个std::map<thread_id_t, message>
,则此线程安全吗,假设线程一仅添加密钥为1的消息,线程2为密钥2的消息,依此类推?
std::map
对于多个同时进行的写程序不是线程安全的。
STL映射不是线程安全的许多原因之一是,STL映射的基础实现是AVL树,在多次插入后需要每隔一段时间重新平衡一次。重新平衡映射会影响多个节点,并且绝对不是线程安全的。
如果您对其中的任何一个听起来很有趣,请参阅Dobb博士关于无锁数据结构的出色文章。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句