小编Phi*_*lip的帖子

创建新线程时复制构造函数调用

我正在阅读C++ Concurrency in Action一书,以了解有关线程和C++内存模块的更多信息.我很好奇在以下代码中调用复制构造函数的次数:

struct func
{
    func() = default;
    func(const func& _f) {}

    void operator()() {}
};

int main()
{
    func f;
    std::thread t{ f };
    t.join();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我在Visual Studio 2013调试器中浏览此代码时,我看到复制构造函数分别被调用了四次.它从主线程调用三次,然后从新线程调用一次.我期待一个,因为它为新线程制作了一个对象的副本.为什么要创建三个额外副本?

c++ multithreading copy-constructor stdthread visual-studio-2013

10
推荐指数
1
解决办法
608
查看次数