0%

线程状态转换

线程状态

  • 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 线程生命周期结束