为什么使用线程?

  1. 程序单进程执行可能会使程序执行不连贯
  2. 程序多进程执行会产生进程间通信、进程状态切换,数据调用等开销
  3. 因此,产生了一种执行方式:
    • 实体之间可以并发地执行
    • 实体之间共享相同的地址空间

线程

  • 线程(Thread):进程中的一条执行流程
  • 重新理解进程:
    • 资源组合的角度:进程管理资源(代码段、数据段)、打开文件的各种资源
    • 运行角度:代码在这个资源平台上的一条自行流程(线程)
  • TCB:有各自的线程的数据结构等
  • 进程中的线程共享资源平台
  • 线程的缺点:一个线程崩溃,会导致其所属进程的线程崩溃

线程与进程的比较

  • 进程是资源分配单位,线程是CPU调度单位
  • 进程拥有完整的资源平台,而线程只拥有必不可少的资源
  • 线程同样具有就绪、阻塞和执行三个状态,同样具有状态之间的转换关系
  • 线程能够减少并发执行的开销
    • 线程的创建时间比进程短
    • 线程的结束时间比进程短
    • 同一进程内的线程切换时间比进程短
    • 线程可以不同过内核通信

线程的实现

用户线程

内核线程

轻量级进程
  • 内核支持的用户线程
  • 每个量级的进程都有一个内核线程来支持