简单总结下线程和进程的区别

2,249 阅读2分钟

进程和线程是什么?

首先你要理解cpu的概念,计算机上的所有操作都是由cpu来执行的,cpu将要执行的操作分为一个个的任务,这些任务我们就可以理解为进程,而这些任务又分为一些细粒度更小的子任务,这些子任务就称作线程

cpu轮流执行任务的,每一个任务需要经过以下三个阶段:

  • 加载上下文
  • 执行
  • 保存上下文

也就是说,每一个进程从加载、执行,到切换下一个进程执行,都会经历同样的一个过程,我们的cpu就是在无时无刻地进行这样的进程切换操作

而我们又可以把进程分为一些细粒度更小的线程,这些线程之间也可以来回的切换,就像进程一样,但是却不需要加载和保存上下文的操作,因为这些线程都是共享上下文的

进程与线程的区别

这里为大家简单总结了一些进程和线程的区别,如有错误欢迎指正:

  • 性质不同:进程是资源分配的基本单位,线程是cpu执行运算和调度的基本单位
  • 归属不同:一个操作系统中可以有很多进程,一个进程可以有很多线程
  • 开销不同:进程创建、销毁和切换的开销都要远大于线程
  • 拥有资源不同:每个进程都拥有自己的内存和资源,一个进程中的线程会共享这些内存和资源
  • 通信方式不同:进程之间可以通过管道、消息队列、共享内存、信号量,以及Socket等机制实现通信,线程之间主要通过共享变量及其变种形式实现通信
  • 控制和影响能力不同:子进程无法控制父进程,一个进程发生异常时一般不会影响其他进程;子线程可以控制父线程,如果主线程发生异常,会影响其所在进程和其余线程
  • 扩展能力不同:多进程可以方便地扩展到多机分布式系统上,多线程想要扩展到多台机器上就很困难
  • cpu利用率不同:进程的cpu利用率低,因为需要额外的上下文切换开销;线程的cpu利用率高,因为切换简单
  • 可靠性不同:进程的可靠性要高于线程