猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
以下是多线程技术中的两个函数,我想知道的是 1,2两句同时用和只用1,有没有区别?
phtread_detach(id); //1
pthread_join(id,0);//2
注:id为子线程的线程号。
心有法竹
浏览 145
回答 2
2回答
catspeake
有区别。只用1可以。同时使用1,2是不可以的。 一般情况下,线程终止后,其终止状态一直会保留到其他线程调用pthread_join获取它的状态为止。但是线程也可以设置为detach状态,这样的线程一旦终止就立即回收它占用的所有资源,而不保留终止状态。注意:不能对已经detach状态的线程调用pthread_join。对一个尚未detach的线程调用phread_join或phread_detach都可以把该线程设置为datach,也就是说,不能对同一线程调用两次pthread_join,或者如果已经对一个线程调用了pthread_detach就不能再调用pthread_join了。phtread_join是阻塞式的,需要等待这个线程终止,而phread_datach是不阻塞的,所以可以用phread_datach来销毁终止线程
0
0
0
皈依舞
是这样的,pthread_join()这个函数在多线程开发中主线程主要用来获得子线程结束的状态以便回收子线程的资源。但是有时候会出现你调用pthread_join()后,子线程还在运作,这样调用者(调用pthread_join的者)可能就会被阻塞,这时候就可以调用phtread_detach()子线程非阻塞,可立即返回,这将该子线程的状态设置为detached,则该线程运行结束后会自动释放所有资源。子线程中这个用pthread_detach(pthread_self())父线程中这么调用pthread_detach(thread_id)//(非阻塞,可立即返回)他们都是这将该子线程的状态设置为detached,则线程运行结束后会自动释放所有资源。
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
C
typedef入门问题
5 回答
C++
typedef入门问题
5 回答
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续