文章目录
前言:
C++中的线程状态及切换是操作系统和C++线程库(如POSIX线程或C++11及之后的
<thread>库)共同管理的。线程的状态和切换是多线程编程中的重要概念,下面将简要介绍C++线程的主要状态以及它们之间的切换。
一、多线程状态及切换
1、线程状态
在C++中,线程的状态主要有以下几种:
- 新建状态(New):当一个线程对象被创建,但还没有调用其
start()方法(对于C++11及之后的<thread>库)或相应的启动函数(如pthread_create对于POSIX线程)时,线程处于新建状态。 - 就绪状态(Ready):线程已经启动,等待被操作系统调度到CPU上执行。此时线程已经具备了执行所需的所有资源,只是CPU资源还未分配给它。
- 运行状态(Running):线程正在CPU上执行其代码。需要注意的是,由于时间片轮转、中断等机制,线程并不会一直运行在CPU上,而是会与其他线程交替执行。
- 阻塞状态(Blocked):线程因为某些原因(如等待I/O操作完成、获取某个锁、执行了某个阻塞函数等)暂时放弃对CPU的使用权,进入阻塞状态。当阻塞的原因消除后,线程会重新进入就绪状态,等待被调度执行。
- 终止状态(Terminated):线程执行完毕或因异常而终止,进入死亡状态。此时线程的资源会被操作系统回收,线程对象不能再被使用。

线程状态及切换&spm=1001.2101.3001.5002&articleId=139336292&d=1&t=3&u=64f6a623e2a44809983c93447282a230)
534

被折叠的 条评论
为什么被折叠?



