进程是否必须至少包含一个线程?进程是否可能没有任何线程,或者这是否有意义?
答案 0 :(得分:5)
进程通常至少有一个线程。 Wikipedia有定义:
执行线程是可由操作系统调度的最小处理单元。线程和进程的实现因操作系统而异,但在大多数情况下,线程包含在进程内。
The MSDN支持此事:
处理器执行线程而不是进程,因此每个应用程序至少有一个进程,并且进程始终至少有一个执行线程,称为主线程。
虽然它确实继续说:
流程可以包含零个或多个单线程公寓以及零个或多个多线程公寓。
这意味着如果单线程公寓和多线程公寓的数量都可以为零。但是,这个过程不会做太多的事情:))
答案 1 :(得分:2)
您可以选择不使用显式线程库,也可以选择不使用线程概念的操作系统(因此不会将其称为线程),但对于大多数现代编程,所有程序都至少有一个执行线程(通常称为主线程或UI线程或类似)。如果退出,那么这个过程也是如此。
思考实验:零线程执行的进程会做什么?
答案 2 :(得分:2)
在类Unix操作系统中,可能有一个zombie process,即使没有(更长)任何线程,进程表中仍然存在一个条目。
答案 3 :(得分:0)
理论上,我不明白为什么不。但是流行的操作系统是不可能的。
流程通常由几个不同的部分组成:
理论上,可以存在没有线程作为RPC服务器的进程。其他进程会进行RPC调用,在服务器进程中生成线程,然后线程在函数返回时消失。我不知道任何以这种方式工作的操作系统。
在大多数操作系统上,进程在最后一个线程退出时退出,或者在主线程退出时退出。
注意:这会忽略“无用”的情况,例如僵尸进程,它们没有线程但没有做任何东西。
答案 4 :(得分:0)
“main”本身就是线程。它是一个被执行的线程。因此,每个进程至少在一个线程上运行。