C++ 多线程学习笔记(2):线程启动、结束、创建线程方法 |
您所在的位置:网站首页 › 结束了怎么读 › C++ 多线程学习笔记(2):线程启动、结束、创建线程方法 |
根据先前关于detach的分析,假设这个类中引用了主线程的变量,而且子线程创建后调用detach() 了,如果主线程先执行完,这个被引用的变量就会被回收,而此时子线程(没执行完)仍在引用这块内存空间,会导致不可预料的结果 但是有一个问题:如果主线程调用了detach 了,假设主线程先结束,那ta对象还在吗,如果ta不再了,子线程是不是也被销毁了? 实际上,ta对象确实被回收了,但是子线程还在 这是由于 thread mytobj(ta); 这句实际上创建了一个ta对象的副本放到子线程去了(ta对象被复制到子线程中去,调用拷贝构造函数)。虽然主线程的ta对象被销毁,但子线程的ta对象副本还在 所以:只要这个TA类对象中没有引用/指针,detach 就不会出问题 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |