什么是线程(Thread):
> 线程是进程当中的一条执行流程。
线程的优缺点
线程的优点:
- 一个进程中可以同时存在多个线程
- 各个线程之间可以并发地执行
- 各个线程之间可以共享地址空间和文件等资源
线程的缺点:
- 一个线程崩溃,会导致进程其他线程也崩溃!
线程与进程的比较
线程 = 进程 - 共享资源
- 进程是资源分配单位,线程是CPU调度单位(进程是一个资源平台,而线程是调度资源的一个”员工“)
- 进程拥有一个完整的资源平台,而线程只独享必不可少的资源,如寄存器和栈
- 线程同样拥有就绪、阻塞和执行三种基本状态,同样具有状态之间的转换关系
- 线程能减少并发执行的时间和空间开销:
- 线程的创建时间比进程短
- 线程的终止时间比进程短
- 同一进程内的线程切换时间比进程短
- 由于同一进程的各线程间共享内存和文件资源,可直接进行不通过内核的通信
线程的实现
线程的三种实现方式:
- 用户线程:在用户空间实现(操作系统看不到的线程,由专门的用户线程库管理)
- 内核线程:在内核中实现(操作系统管理起来的线程)
- 轻量级进程:在内核中实现,支持用户线程(主要适用于Linux)
轻量级进程(LWP)是建立在内核之上并由内核支持的用户线程,它是内核线程的高度抽象,每一个轻量级进程都与一个特定的内核线程关联。内核线程只能由内核管理并像普通进程一样被调度。
用户线程与内核线程对应的关系
多对一:多个用户线程对应一个内核线程
一对一:一个用户线程对应一个内核线程
多对多:多个用户线程对应多个内核线程