detach大坑

使用detach()函数,让主线程和子线程分开运行,即使主线程运行完了,也就是这个进程已经结束了,而子线程还在继续运行,它将会交由操作系统托管,这将会导致很多的问题。

如果使用detach():

1.如果线程传参数传递int这种简单的类型,不要传递引用,亲测编译器会报错。

2.如果传递的是一个类对象,不要让编译器进行隐式类型转换,在创建线程的同时就构建出来一个临时对象,并且在函数声明的时候使用引用来接收,否则会右调用一次拷贝构造函数,再重新创建一个对象。

3.创建线程的时候使用了一个临时变量,在主线程结束的之后,临时变量所占用的内存已经被回收了,这是子线程再去使用这一片已经被系统回收的内存,就会造成内存泄漏的危险行为。

so:能用join就不要用detach。

猜你喜欢

转载自www.cnblogs.com/leoncumt/p/10505754.html
今日推荐