frendguo's blog

进程/线程/协程的区别和联系

进程 ( process )

  • 又称为工作(Jobs)或者任务(Tasks)
  • 为了使多个程序能够并发的执行, 操作系统需要一种数据结构来抽象和表示这个程序的执行(并发与并行)
  • 是计算机已运行程序的实体( 正所谓: 正在进行的程序就叫进程)
  • 进程曾经是分时系统的基本运行单元. 但在现代操作系统中, 线程并不是运行的单元, 而是线程的容器
  • 同一程序可产生多个进程(一对多关系),也允许同时有多位用户运行同一程序,却不会相冲突
  • 进程需要一些资源才能完成工作,如CPU使用时间、内存、文件以及I/O设备,且为依序逐一进行,也就是每个CPU核心任何时间内仅能运行一项进程。

线程 ( Thread )

  • 鉴于进程的调度涉及的内容或者资源较多, 调度开销大. 为了更高效的进行任务调度, 就诞生出了比进程更轻量的线程
  • 线程是操作系统能够运算调度的最小单元
  • 线程被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务
  • 同一进程中的多条线程将共享该进程中的全部系统资源

协程 ( Coroutine )

  • 协程是用户模式下的轻量级线程
  • 协程是一种程序组件, 可用来实现多种程序组件, 如合作式多任务
  • Coroutines in C

Add comment

Loading