phtread_detach(id); //1 pthread_join(id,0);//2 以上是多线程技术中的两个函数,我想知道的是 1,2两句同时用和只用1,有没有区别? 有什么区别? 谢谢! 注:id为子线程的线程号。
2013-08-10 23:35
网友采纳
是这样的,pthread_join()这个函数在多线程开发中主线程主要用来获得子线程结束的状态以便回收子线程的资源。
但是有时候会出现你调用pthread_join()后,子线程还在运作,这样调用者(调用pthread_join的者)可能就会被阻塞,这时候就可以调用
1
|
phtread_detach()
|
子线程非阻塞,可立即返回,这将该子线程的状态设置为detached,则该线程运行结束后会自动释放所有资源。
子线程中这个用
1
|
pthread_detach(pthread_self())
|
父线程中这么调用
1
|
pthread_detach(thread_id)
//(非阻塞,可立即返回)
|
他们都是这将该子线程的状态设置为detached,则线程运行结束后会自动释放所有资源。