小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
线程
引入进程的目的是为了更好的实现并发,
引入线程的目的是减小程序在并发执行时所付出的时空开销
-
“轻量级CPU”——基本的CPU执行单元&程序执行流的最小单元
-
- 即线程无资源
-
引入线程后,进程则作为除处理机以外的系统资源的分配单元,处理机和线程对应,由于多个线程在一个进程内,进程内的线程切换,开销小
-
同时进程内的线程通信可通过全局变量的方式进行
线程控制块TCB:线程id,程序计数器,寄存器和堆栈
线程实现方式
-
用户级线程
- 有关线程管理的所有工作都由应用程序完成,内核意识不到线程的存在
- 应用程序最初是单线程,需要自己创
-
内核级线程
- 线程管理的所有工作由内核完成,应用程序只有一个到内核级线程的编程接口
- 在内核空间为每一个内核支持线程设置了一个线程控制块,内核是根据该控制块而感知某线程的存在的,并对其加以控制
- 优点:内核可以把同一个进程的多个线程分给多个处理机,线程被阻塞对别的线程无影响
- 缺点:同一个进程中把控制从一个线程传给另一个线程,需要内核来模式切换
-
映射方式
-
一对一【内核级线程】
-
多对一【用户级线程】
- 线程管理在用户空间进行效率高
- 一阻塞都阻塞
- 多个线程不能多处理机
-
多对多折衷
-