Picture

进程 线程 协程

操作系统

进程 线程 协程

进程

  • 简单说就是运行中的程序
  • 进程是系统进行资源分配和调度的一个独立单位
  • 每个进程都拥有自己独立的内存空间 (栈、寄存器、虚拟内存、文件句柄等)
  • 进程间切换开销比较大,但比较稳定安全

线程

  • 线程是操作系统能够进行运算调度的最小单位
  • 线程是CPU调度和分派等基本单位,线程本身基本不拥有系统资源,只拥有一些 运行中必不可少等资源(PC,一组寄存器和栈)
  • 与同组等线程共同拥有该进程等所有资源
  • 上下文切换很快,资源开销较少

协程

  • 协程是一种用户态大轻量级线程,协程完全由用户控制
  • 协程拥有自己大寄存器上下文和栈
  • 协程操作基本没有内核切换大开销

进程、线程、协程比较

  • 进程拥有自己独立的堆和栈,既不共享堆,亦不共享栈,进程由操作系统调度。
  • 线程拥有自己独立的栈和共享的堆,共享堆,不共享栈,线程亦由操作系统调度(标准线程是的)。
  • 协程和线程一样共享堆,不共享栈,协程由程序员在协程的代码里显示调度。

http://www.cnblogs.com/lxmhhy/p/6041001.html

https://my.oschina.net/liubin/blog/27795

http://huyongde.github.io/2016/03/19/process-thread-coroutine.html