gpt4 book ai didi

c++ - std::thread、类构造函数和析构函数

转载 作者:太空狗 更新时间:2023-10-29 23:33:33 25 4
gpt4 key购买 nike

在 C++11 中测试线程时,我创建了以下示例:

#include <iostream>
#include <thread>

class Foo {
public:
Foo(void) {
std::cout << "Constructor called: " << this << std::endl;
}
~Foo(void) {
std::cout << "Destructor called: " << this << std::endl;
}
void operator()() const {
std::cout << "Operatior called: " << this << std::endl;
}
};

void test_normal(void) {
std::cout << "====> Standard example:" << std::endl;
Foo f;
}

void test_thread(void) {
std::cout << "====> Thread example:" << std::endl;
Foo f;
std::thread t(f);
t.detach();
}


int main(int argc, char **argv)
{
test_normal();
test_thread();

for(;;);
}

打印以下内容:

enter image description here

为什么线程的析构函数被调用了6次?为什么线程会报告不同的内存位置?

编辑添加移动和复制构造函数输出时:

enter image description here

最佳答案

函数对象将被移动或复制。您没有考虑其中任何一个的输出。

关于c++ - std::thread、类构造函数和析构函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12983546/

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