自从我阅读一些有关进程和线程的新主题以来,我脑海中浮现出这些问题。如果有人能帮助我,我会很高兴。
1) 如果一个线程被标记为不可取消,然后该进程在临界区内被终止,会发生什么?
2)我们的程序是否有操作系统已知的主线程?我的意思是操作系统是否给予程序的第一个线程一些有利的权利或其他什么?
3)当我们杀死一个进程并且线程没有加入时,它们会变成僵尸吗?
首先,不要杀死或取消线程,让它们自杀。如果你从外部杀死一个线程,你永远不知道你会留下什么副作用——变量、同步原语的状态等等。如果您发现一个线程有必要终止另一个线程,那么让有问题的线程检查开关、捕获信号等,并在退出之前清理其状态。
1) 如果不可取消指的是分离的,则与连接的线程相同。如果你盲目地杀掉它,你不知道你会留下什么烂摊子。
2)从应用程序级别的角度来看,最重要的是,如果主线程 exits() 或 returns() ,它将关闭所有其他线程。如果主线程通过 pthread_exit() 自行终止,则剩余线程将继续运行。
3)与进程非常相似,线程将保留一些资源,直到它被收获(加入)或程序结束,除非它作为分离运行。
RE 注意:线程不共享堆栈,它们各自拥有自己的堆栈。看clone() http://linux.die.net/man/2/clone有关线程创建的一些信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)