为什么使用线程?
- 程序单进程执行可能会使程序执行不连贯
- 程序多进程执行会产生进程间通信、进程状态切换,数据调用等开销
- 因此,产生了一种执行方式:
- 实体之间可以并发地执行
- 实体之间共享相同的地址空间
线程
- 线程(Thread):进程中的一条执行流程
- 重新理解进程:
- 资源组合的角度:进程管理资源(代码段、数据段)、打开文件的各种资源
- 运行角度:代码在这个资源平台上的一条自行流程(线程)
- TCB:有各自的线程的数据结构等
- 进程中的线程共享资源平台
- 线程的缺点:一个线程崩溃,会导致其所属进程的线程崩溃
线程与进程的比较
- 进程是资源分配单位,线程是CPU调度单位
- 进程拥有完整的资源平台,而线程只拥有必不可少的资源
- 线程同样具有就绪、阻塞和执行三个状态,同样具有状态之间的转换关系
- 线程能够减少并发执行的开销
- 线程的创建时间比进程短
- 线程的结束时间比进程短
- 同一进程内的线程切换时间比进程短
- 线程可以不同过内核通信
线程的实现
用户线程
内核线程
轻量级进程
- 内核支持的用户线程
- 每个量级的进程都有一个内核线程来支持
