gpt4 book ai didi

c++ - 在线程中使用 std::string 函数安全吗? (c++)

转载 作者:行者123 更新时间:2023-11-28 01:17:20 25 4
gpt4 key购买 nike

我想在一个 dll 中创建一个线程来发出一些网络请求。在线程中,我现在使用 std::sting 函数(c_str()、at()、find()、substr())和(string + string)。我知道线程异步运行,而且我发现如果我同时调用 1 个函数 2 次(1 个来自主程序,1 个来自线程)我猜会导致问题/崩溃,因为它们都使用相同的内存?

所以现在,如果我非常快速地执行许多 Web 请求,我有时会崩溃。我认为这是因为同时使用了 2 次 std::string 函数。另外,如果这可能是导致问题的原因,我还有其他方法可以用于这项工作吗?

最佳答案

您是否在两个线程之间共享相同的 std::string object?如果是这样(并且该对象正在被一个线程修改,而另一个线程也在尝试使用它),那将导致未定义的行为,除非您使用某种形式的同步(例如 mutex).

如果 OTOH 这两个线程各自在各自独立/私有(private)的 std::string 对象上运行,那不会导致问题。

关于c++ - 在线程中使用 std::string 函数安全吗? (c++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58248625/

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