开发者社区> 问答> 正文

从对象原因到此类的调用析构函数的c ++ std :: thread调用方法

我对此代码有一些疑问:

#include <thread>
#include <unistd.h>
#include <iostream>

class A
{
public:
    ~A()
    {
        std::cout << "Destructor A: " << this << std::endl;
    }

    void operator()()
    {
        std::cout << "going to sleep 10 seconds.." << std::endl;
        sleep(10);
        std::cout << "wake" << std::endl;
    }
};

int main()
{
    std::cout << "begin" << std::endl;
    A* a = new A();
    std::thread th(*a);
    th.join();
    std::cout << "end" << std::endl;
    delete a;

    return 0;
}

展开
收起
祖安文状元 2020-01-07 14:20:53 411 0
1 条回答
写回答
取消 提交回答
  • 由于std::thread无法确定创建线程后传递给它的值是否存在,因此它将复制传递的值。

    由制作的另一个副本decay_copy,称为in std::thread的构造函数。

    新实例。

    您可以std::thread在此处详细了解的构造函数:https :

    2020-01-07 14:20:58
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
GPON Class C++ SFP O;T Transce 立即下载
GPON Class C++ SFP OLT Transce 立即下载