簡體   English   中英

在線程中使用 std::string 函數是否安全? (c++)

[英]is it safe to use std::string functions in a thread? (c++)

我想在 dll 中創建一個線程,該線程將發出一些 web 請求。 在線程中,我現在使用 std::sting 函數(c_str()、at()、find()、substr())和(string + string)。 我知道線程異步運行,而且我發現如果我同時調用 1 function 2 次(1 次來自主程序,1 次來自線程)會導致問題/崩潰,我猜是因為兩者都使用相同的 memory?

所以現在如果我做很多 web 請求非常快,我有時會崩潰。 我認為這是因為同時使用 2 次 std::string function。 另外,如果這可能是導致問題的原因,我還有其他方法可以用於該工作嗎?

您是否跨兩個線程共享相同的std::string object 如果是這樣(並且 object 正在被一個線程修改,而另一個線程也在嘗試使用它),那將導致未定義的行為,除非您使用某種形式的同步(例如mutex )保護這些訪問。

如果 OTOH 兩個線程都在各自獨立/私有的std::string對象上運行,則不會導致問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM