gpt4 book ai didi

c++ - C++映射的线程安全

转载 作者:可可西里 更新时间:2023-11-01 16:29:57 26 4
gpt4 key购买 nike

这是关于std::map的线程安全的.现在,同时读取是线程安全的,但写入不是。我的问题是,如果我每次都向 map 添加唯一元素,那会是线程安全的吗?

  1. 举个例子,如果我有这样的 map std:map<int, std::string> myMap而且我总是添加新键并且从不修改现有的键值,这会是线程安全的吗?

  2. 更重要的是,这会给我带来任何随机运行时行为吗?

  3. 增加新key也算修改吗?如果在添加时键总是不同的,那么它修改内存的独立部分不应该是线程安全的吗?

谢谢刀锋

最佳答案

1)当然不是

2) 是的,我希望你会在测试中遇到它,而不是以后

3) 是的,是的。新元素被添加到不同的位置,但在此期间修改了许多指针。

在大多数(如果不是全部)实现中, map 是由某种树实现的。在树中插入新元素会通过重置指针以指向不同节点来重新排列节点来修改它。所以不是线程安全的

关于c++ - C++映射的线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8234633/

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