当前位置: 技术问答>linux和unix
thread正常结束也是进入僵死状态么?
来源: 互联网 发布时间:2015-08-21
本文导语: RT.什么是僵死状态,thread正常结束也是进入僵死状态么?如果父进程通过pthread_cancel结束子线程,那么这个线程会如何?我现在是父进程先想办法设置检测条件,让子线程正常结束,然后调用pthread_cancel和pthread_join,...
RT.什么是僵死状态,thread正常结束也是进入僵死状态么?如果父进程通过pthread_cancel结束子线程,那么这个线程会如何?我现在是父进程先想办法设置检测条件,让子线程正常结束,然后调用pthread_cancel和pthread_join,请问这样也会进入僵死状态么?如何解决呢?
另外,假如我的父进程create了一个线程a, 这个线程结束的时候会create一个类似的线程,请问这样是不是会陷入死循环中,前一个线程的结束会影响到它create出来的那个线程的运行么?(主线程是gui,没有结束)
另外,假如我的父进程create了一个线程a, 这个线程结束的时候会create一个类似的线程,请问这样是不是会陷入死循环中,前一个线程的结束会影响到它create出来的那个线程的运行么?(主线程是gui,没有结束)
|
是的。
如果线程终止后没有被分离,则它一直处于终止状态直到被分离(使用detach或join),然后释放系统和进程资源,包括存储线程返回值的内存空间、堆栈、保存寄存器状态的内存空间等。
如果取消线程而没有清理则自己创建的socket等就没有被回收
如果线程终止后没有被分离,则它一直处于终止状态直到被分离(使用detach或join),然后释放系统和进程资源,包括存储线程返回值的内存空间、堆栈、保存寄存器状态的内存空间等。
如果取消线程而没有清理则自己创建的socket等就没有被回收
|
如果没有detach的话一定要使用join,否则的话,资源不会被释放。
如果你不停的创建线程,到后来会创建失败,因为每个进程的使用的线程数量有限制
由于你先前没有执行join,那么线程不会释放资源,进城也就默认那些线程并没有完全
退出
如果你不停的创建线程,到后来会创建失败,因为每个进程的使用的线程数量有限制
由于你先前没有执行join,那么线程不会释放资源,进城也就默认那些线程并没有完全
退出