C++ 多线程学习笔记(2):线程启动、结束、创建线程方法

您所在的位置:网站首页 结束了怎么读 C++ 多线程学习笔记(2):线程启动、结束、创建线程方法

C++ 多线程学习笔记(2):线程启动、结束、创建线程方法

2024-07-16 16:53| 来源: 网络整理| 查看: 265

根据先前关于detach的分析,假设这个类中引用了主线程的变量,而且子线程创建后调用detach() 了,如果主线程先执行完,这个被引用的变量就会被回收,而此时子线程(没执行完)仍在引用这块内存空间,会导致不可预料的结果

但是有一个问题:如果主线程调用了detach 了,假设主线程先结束,那ta对象还在吗,如果ta不再了,子线程是不是也被销毁了?

实际上,ta对象确实被回收了,但是子线程还在

这是由于 thread mytobj(ta); 这句实际上创建了一个ta对象的副本放到子线程去了(ta对象被复制到子线程中去,调用拷贝构造函数)。虽然主线程的ta对象被销毁,但子线程的ta对象副本还在

所以:只要这个TA类对象中没有引用/指针,detach 就不会出问题



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3