Good, better, best. Never let it rest.

进程、线程和协程对比

🖥️ 计算机的核心是CPU,它承担了所有的计算任务;而操作系统是计算机的管理者,它负责任务的调度,资源的分配和管理,统领整个计算机硬件;应用程序则是具有某种功能的程序,程序是运行在操作系统上的。

下面我们来简单对比一下有关应用程序的三个重要的概念:进程、线程和协程。

## 进程

进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体。

## 线程

随着计算机的发展,进程之间的切换开销比较大,于是就有了线程。线程是程序执行中一个单一的顺序控制流程,是程序执行流的最小单元。

进程和线程对比:

  1. 进程是操作系统分配资源的最小单位,而线程是程序执行的最小单位
  2. 一个进程是由一个或者多个线程组成,线程是一个进程中代码的不同执行路线
  3. 进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段、数据集、堆等)及一些进程级的资源(如打开文件和信号),某些进程内的线程在其他进程不可见
  4. 上下文切换:线程上下文切换比进程上下文切换要快得多

线程和协程对比:

  1. 协程是轻量级的线程,由程序员自己来调度,因此减少了上下文切换,提高了效率
  2. 线程默认Stack大小是1M,而协程接近1K。因此可以在相同的内存中开启更多的协程

参考文章:点击这里