零螺纹工艺?

时间:2011-10-01 22:59:51

标签: c multithreading process operating-system

进程是否必须至少包含一个线程?进程是否可能没有任何线程,或者这是否有意义?

5 个答案:

答案 0 :(得分:5)

进程通常至少有一个线程。 Wikipedia有定义:

  

执行线程是可由操作系统调度的最小处理单元。线程和进程的实现因操作系统而异,但在大多数情况下,线程包含在进程内。

The MSDN支持此事:

  

处理器执行线程而不是进程,因此每个应用程序至少有一个进程,并且进程始终至少有一个执行线程,称为主线程。

虽然它确实继续说:

  

流程可以包含零个或多个单线程公寓以及零个或多个多线程公寓。

这意味着如果单线程公寓和多线程公寓的数量都可以为零。但是,这个过程不会做太多的事情:))

答案 1 :(得分:2)

您可以选择不使用显式线程库,也可以选择不使用线程概念的操作系统(因此不会将其称为线程),但对于大多数现代编程,所有程序都至少有一个执行线程(通常称为主线程或UI线程或类似)。如果退出,那么这个过程也是如此。

思考实验:零线程执行的进程会做什么?

答案 2 :(得分:2)

在类Unix操作系统中,可能有一个zombie process,即使没有(更长)任何线程,进程表中仍然存在一个条目。

答案 3 :(得分:0)

理论上,我不明白为什么不。但是流行的操作系统是不可能的。

流程通常由几个不同的部分组成:

  • 线程
  • 记忆空间
  • 文件描述符
  • 环境(根目录,当前目录等)
  • 特权(UID等)
  • 等等

理论上,可以存在没有线程作为RPC服务器的进程。其他进程会进行RPC调用,在服务器进程中生成线程,然后线程在函数返回时消失。我不知道任何以这种方式工作的操作系统。

在大多数操作系统上,进程在最后一个线程退出时退出,或者在主线程退出时退出。

  

注意:这会忽略“无用”的情况,例如僵尸进程,它们没有线程但没有任何东西。

答案 4 :(得分:0)

“main”本身就是线程。它是一个被执行的线程。因此,每个进程至少在一个线程上运行。