介绍
QThread是Qt提供的线程类,每一个QThread均可管理一个线程。
其具有两种使用方式:1、继承为QThread的子类;2、继承为QObject的子类,并使用QObject::moveToThread将此对象移到线程中运行
QThread提供了如下基本函数:
线程启动:start()运行一次
线程终止:terminate 终止线程,强制终止线程但会依据操作系统的调度策略,可能不是立即终止,最好用wait等待
quit退出线程,也可以调用exit,效果相同,会正常终止线程。
线程状态查询:isRunning是否正在运行,isFinished是否运行完成
线程状态信号:started线程启动时发出,finished线程结束时发出
其他:wait阻塞方式等待线程结束,调用此函数会将调用指令所在函数阻塞
建议对finished信号建立对应槽,实现线程结束后操作,而不是使用wait等待
更多详细说明见官方文档
线程优先级
start函数有一个参数是线程优先级,此处使用的默认参数,若未设置也可以调用setPriority函数设置优先级,优先级分为以下几类:
Constant | Value | Description |
---|---|---|
QThread::IdlePriority |
0 |
scheduled only when no other threads are running. |
QThread::LowestPriority |
1 |
scheduled less often than LowPriority. |
QThread::LowPriority |
2 |
scheduled less often than NormalPriority. |
QThread::NormalPriority |
3 |
the default priority of the operating system. |
QThread::HighPriority |
4 |
scheduled more often than NormalPriority. |
QThread::HighestPriority |
5 |
schedu |