一、知识总览
二、什么是线程?为什么要引入线程?
(1)线程就是轻量级的进程 (2)线程是一个基本的cpu执行单元,也是程序执行流的最小单位。 (3)大家可以将qq和音乐看成是两个进程,qq里面的视频、文字聊天、传输文件看成是不同的线程。
三、引入线程,带来的变化
四、线程的属性
五、线程的实现方式
用户级线程 用户级线程由应用程序通过线程库实现。 先线程切换可以在用户态下完成,不用操作系统的干预
内核级线程 内核级线程的管理工作由操作系统完成,线程调度、切换等工作都由内核负责,因此内核级线程的切换必然需要在核心态下才能完成。 同时支持用户级进程和内核级进程,二者结合使用 将n个用户级线程映射到m个内核级线程上(n>=m); 操作系统只”看的见“内核级线程,因此只有内核级线程才是处理机分配的单位。
六、多线程模型
多对一模型 多个用户进程映射到一个内核级线程。 优点:线程切换效率高,开销小,因为不涉及核心态,在用户空间即可完成 缺点;一个线程在使用内核服务时被阻塞,则整个进程都会被阻塞,并发能力弱。 一对一模型 一个用户级线程映射到一个内核级线程 优点:并发能力强,多线程可在多核处理机上并行执行。 缺点:每次线程切换都需要操作系统参与,因此开销大,效率低。 多对多模型 n用户级线程映射到m个内核级线程(n>=m)。 集两者只所长:开销小,并发能力强。
七、总结