操作系统调度
- 操作系统调度器,它负责确保在有线程能够运行的时候内核不会空闲下来。它会制造一种假象——所有能够跑的线程此时都在同时执行。为此,调度器需要优先执行高优先级的线程,但是它也必须保证低优先级的线程不会饿死。调度器也必须尽可能将调度延时压倒最少
线程三种状态
- 等待:线程停止并且等待被唤醒。如等待硬件(硬盘、网络),操作系统(系统调用) 或者是同步调用(atomic,mutexes)
- 可执行:线程想要占用内核上的cpu时间来执行分配给线程的指令
- 执行中:线程已经置于内核中,并且正在执行它的机器指令
线程工作模型
- 计算密集型:进行持续性的cpu计算工作
- IO密集型:线程会持续的请求资源或者是对操作系统进行系统调用
上下文切换
- 内从从物理层面切换线程
- 可执行状态的线程变成执行中
- 执行中状态的线程变成可执行或等待
- 上下文切换对计算密集型影响较大
- 上下文切换对IO密集型较好