gpt4 book ai didi

c++ - 我可以将shared_ptr作为临时变量传递给线程吗?

转载 作者:行者123 更新时间:2023-12-02 09:50:26 27 4
gpt4 key购买 nike

我的代码中有这一行:

threads.emplace_back( scnThread, shared_ptr<wstring>( new wstring( nextFilePattern ) ), nextPathLength );

在启动线程中的所有shared_ptr拷贝被销毁之前,我可以依靠该线程获取shared_ptr的拷贝吗?

最佳答案

是的,这里没有问题。 std::thread构造函数始终会复制传递给它的参数的拷贝(通过复制或移动),并且线程将这些拷贝作为参数执行。这些拷贝是在调用方的上下文中创建的,而不是在另一个线程中创建的。

您传递给构造函数的std::shared_ptr临时生存期将一直持续到完整表达式的结尾,直到线程构造函数返回为止。它将从中移出以构造线程函数参数,因此引用计数在所有参数中都将保持为1。仅在此移动完成后,新线程才开始执行。

关于c++ - 我可以将shared_ptr作为临时变量传递给线程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60126952/

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