当前位置: 技术问答>linux和unix
求助,线程的回收
来源: 互联网 发布时间:2016-08-18
本文导语: 情况如下: 主线程每1分钟创建一个新的线程,新线程随机sleep m秒(无法预先估计它到底sleep多少秒),当然,这个m是有限制的,在1-100之间。主线程运行5小时,就会发生线程号耗尽的情况,因为进程内最大的线程...
情况如下:
主线程每1分钟创建一个新的线程,新线程随机sleep m秒(无法预先估计它到底sleep多少秒),当然,这个m是有限制的,在1-100之间。主线程运行5小时,就会发生线程号耗尽的情况,因为进程内最大的线程数是255.
据我所知,pthread_join是用来回收结束线程的,但是join函数会阻塞主线程,即会等m秒,等待子线程结束以后才能回收。
问题是:
1.有什么办法在不阻塞主线程的情况下,对已经结束的线程进行一次回收么-------或者说最好是在创建线程以后马上执行一个函数,在不阻塞主线程情况下,还能在子线程结束后自动对该线程进行回收?
2.顺便问一下,一个线程能否在结束时就彻底结束自己,而不需要再被回收呢?
主线程每1分钟创建一个新的线程,新线程随机sleep m秒(无法预先估计它到底sleep多少秒),当然,这个m是有限制的,在1-100之间。主线程运行5小时,就会发生线程号耗尽的情况,因为进程内最大的线程数是255.
据我所知,pthread_join是用来回收结束线程的,但是join函数会阻塞主线程,即会等m秒,等待子线程结束以后才能回收。
问题是:
1.有什么办法在不阻塞主线程的情况下,对已经结束的线程进行一次回收么-------或者说最好是在创建线程以后马上执行一个函数,在不阻塞主线程情况下,还能在子线程结束后自动对该线程进行回收?
2.顺便问一下,一个线程能否在结束时就彻底结束自己,而不需要再被回收呢?
|
http://baike.baidu.com/view/400319.htm 中的 线程分离属性
|
detach
设置分离线程。
设置分离线程。