因为我正在阅读有关进程和线程的一些新主题,所以我想到了这些问题。如果有人可以帮助我,我会很高兴。
1)如果一个线程被标记为不可取消,然后进程在临界区内被杀死,会发生什么?
2)我们是否有操作系统已知的程序的主线程?我的意思是操作系统是否赋予程序的第一个线程一些有益的权利或什么?
3)当我们杀死一个进程并且线程没有加入时,它们会变成僵尸吗?
因为我正在阅读有关进程和线程的一些新主题,所以我想到了这些问题。如果有人可以帮助我,我会很高兴。
1)如果一个线程被标记为不可取消,然后进程在临界区内被杀死,会发生什么?
2)我们是否有操作系统已知的程序的主线程?我的意思是操作系统是否赋予程序的第一个线程一些有益的权利或什么?
3)当我们杀死一个进程并且线程没有加入时,它们会变成僵尸吗?
首先,不要杀死或取消线程,让它们杀死自己。如果你从外部杀死一个线程,你永远不知道你留下了什么副作用——变量、同步原语的状态等。如果您发现一个线程有必要终止另一个线程,则让有问题的线程检查开关,捕获信号等,并在退出之前清理其状态。
1)如果不可取消是指分离,则与连接线程相同。如果你盲目地杀死它,你不知道你留下了什么烂摊子。
2)从应用程序级别的角度来看,主要的事情是,如果主线程退出()或返回(),它将与它一起取消所有其他线程。如果主线程使用 pthread_exit() 自行终止,则其余线程继续运行。
3) 与进程非常相似,线程将保留一些资源,直到它被收割(加入)或程序结束,除非它以分离的方式运行。
RE 注意:线程不共享它们各自拥有的堆栈。有关线程创建的一些信息,请参见clone()。