线程状态
- New(新建):线程对象刚创建,还未开始执行。
- Ready(就绪):线程准备好运行,等待调度器分配 CPU。
- Running(运行):线程正在使用 CPU 执行指令。
- Blocked(阻塞):线程在等待某个事件(如 I/O、锁、条件变量等),不能运行。
- Terminated(终止):线程执行完毕或被强制结束。
- Sleeping(休眠):线程主动暂停一段时间(如 sleep()),不能被调度。
线程状态转换图
当前状态 | 触发条件 | 转换后状态 | 说明 |
---|---|---|---|
New | 调用 start() 或 std::thread 构造函数 | Ready | 线程被创建,等待调度 |
Ready | 被调度器选中 | Running | 获得 CPU,开始执行 |
Running | 时间片耗尽 / yield() | Ready | 主动或被动让出 CPU,重新排队 |
Running | 调用 sleep() / wait() / 等待锁 | Blocked / Sleeping | 线程不能继续执行,等待事件或时间 |
Blocked / Sleeping | 条件满足 / 时间到 | Ready | 线程重新具备运行条件,等待调度 |
Running | 执行结束或异常 | Terminated | 线程生命周期结束 |