gpt4 book ai didi

c++ - std::map插入线程安全吗?

转载 作者:行者123 更新时间:2023-12-01 14:57:41 26 4
gpt4 key购买 nike

我知道std::map类在两个线程的读写中是线程不安全的。但是可以插入多个线程吗?

void writeMap()
{
for (int i = 0; i < 1000; i++)
{
long long random_variable = (std::rand()) % 1000;
std::cout << "Thread ID -> " << std::this_thread::get_id() << " with looping index " << i << std::endl;
k1map.insert(std::make_pair(i, new p(i)));
}
}

int main()
{
std::srand((int)std::time(0));
for (int i = 0; i < 1000; ++i)
{
long long random_variable = (std::rand()) % 1000;
std::thread t(writeMap);
std::cout << "Thread created " << t.get_id() << std::endl;
t.detach();
}
return 0;
}

就像这样的代码正常运行,无论我尝试多少次。

最佳答案

程序在某种程度上很复杂,例如魔术(LOL)。
不同的IDE上的代码运行结果是不同的。
以前,我使用VS2013,这总是正确的。
但是在vs19和linux上,相同代码的结果是错误的。
也许在vs2013上,MAP的实现有特殊的方式。

关于c++ - std::map插入线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61693055/

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