2-1-5线程的概念和特点
有的进程可能需要"同时"做很多事,而传统的进程只能串行的执行一系列程序,为此引入了"线程"来
增加并发度。可以把线程理解为"轻量级进程"
引入线程机制后,有什么变化?
-
引入线程前,
进程既是资源分配的基本单位,也是调度的基本单位。引入线程后,进程是资源分配的基本单位,线程成为了调度的基本单位 -
引入线程之后,不仅是进程之间可以并发,
进程内的各线程之间也可以并发,从而进一步提高了系统的并发度,使得一个进程内也可以并发处理各种任务 -
当
切换进程时,需要保存/恢复进程运行环境,还需要切换内存地址空间(更新快表、更新缓存),开销很大。同一进程内的各个线程间并发,不引起进程切换,不需要切换进程的运行环境和内存地址空间,省时省力。
进程间并发,开销很大。线程间并发,开销更小。引入线程机制后,并发带来系统开销降低,系统并发性提升
- 各个进程的内存地址空间相互独立,只能
通过请求操作系统服务(CPU要切换到核心态)来完成进程间的通信,开销大。从属于同一进程下的各个线程共享进程拥有的资源,线程间的通信无需操作系统的干预(切换状态),可以直接通过读/写内存空间进行通信,开销更小
线程的属性
- 在
多CPU环境下,各个线程也可以分派到不同的CPU上并行地执行 - 线程几乎不拥有资源,只拥有极少量的资源(线程控制块TCB、寄存器信息、堆栈等)
- 线程也有运行态、就绪态、阻塞态