两者的概念
计算机所有的操作都是由CPU来执行的,CPU将要执行的操作分为一个个的任务,这些任务我们可以理解为进程
,而这些任务又分为一些细粒度更小的子任务,这些子任务称作线程
,每一个任务都需要经过以下三个阶段:
- 加载上下文
- 执行
- 保存上下文
两种的区别
- 性质不同:进程是
资源分配
的基本单元,线程是cpu执行运算和调度
的基本单元。 - 归属不同:一个操作系统中可以有很多进程,一个进程可以有很多线程。
- 开销不同:进程创建、销毁和切换的开销都要
远大于
线程。 - 拥有资源不同:每一个进程都拥有自己的内存和资源,一个进程中的线程会共享这些内存和资源。
- 控制和影响能力不同:子进程
无法
控制父进程,一个进程发生异常时一般不会影响其他进程;子线程可以
控制父线程,如果主线程发生异常,会影响其所在进程和其余线程。 - 拓展能力不同:多进程可以方便地拓展到多分布式系统上,多线程想要拓展多台机器上就很困难。
- cpu利用率不同:进程CPU利用率
低
,因为需要额外的上下文切换开销;线程的CPU利用率高
,因为切换简单。 - 可靠性不同:进程的可靠性要
高于
线程。