进程(Process):是操作系统分配资源的基本单位

  • 每个进程有独立内存空间
  • 进程之间相互隔离
  • 创建和切换开销大

线程(Thread):操作系统调度的基本单位

  • 一个进程里可以有多个线程
  • 线程之间共享进程内存
  • 比进程轻量,但仍然是内核调度

协程(Goroutine):用户态的轻量级线程

  • 由用户自己调度
  • 创建成本低,如一个Goroutine只要2-4KB
  • 可以轻松创建极多数量

Note
进程是资源分配的基本单位,线程是操作系统调度的基本单位,线程共享进程内。协程是用户态的轻量级线程,比如Goroutine,由运行时调度,创建和切换成本更低,可以支持大量并发。