1. 进程的定义

  1. 进程是程序的一次执行
  2. 进程是一个程序及其数据在处理机上顺序执行时所发生的活动
  3. 进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。

2. 线程的定义

简单来说:线程是处理器调度和分配的基本单位

  1. 线程是指进程内的一个执行单元,也是进程内的可调度实体。
  2. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。
  3. 线程自己基本上不拥有系统资源

3. 协程的定义

  1. 协程是一种用户态的轻量级线程
  2. 协程不是被操作系统内核所管理,而完全是由程序所控制
  3. 协程拥有自己的寄存器上下文和栈。

4. 线程与进程的区别:

具体有以下5点区别:

  1. 调度的基本单位
    线程才是调度和分配的基本单位,所以线程是能独立运行的基本单位。
  2. 并发性
    进程之间可以并发执行,而且同一个进程或者不同进程之间的多个线程之间也可并发执行。
  3. 拥有资源
    进程可以拥有资源,并作为系统中拥有资源的一个基本单位,但是线程不能拥有系统资源,而是仅有一点必不可少的、能保证独立运行的资源。
  4. 独立性
    每个进程都拥有一个独立的地址空间,但是同一进程中的不同线程往往共享进程的内存地址空间和资源。因此线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
  5. 系统开销
    线程的创建要比进程的创建快30倍,线程的上下文切换要比进程上下文的切换快5倍,所以进程的系统开销大。

5. 协程和线程的区别

  1. 协程的切换者是用户(编程者或应用程序),切换时机是用户自己的程序所决定的。
  2. 协程的切换内容是硬件上下文,切换内存保存在用户自己的变量(用户栈或堆)中。
  3. 协程的切换过程只有用户态,即没有陷入内核态,因此切换效率高。