目录
描述
相关函数
使用
准备工作
重写run
发送信号
创建一个线程
启动线程
计时器运行流程
多线程运用场景
描述
qt多线程和Linux多线程类似
Linux有自己的一套多线程 API,Qt 也有着自己封装的多线程 API
QT多线程参考了JAVA中的设计方式
QThread创建线程要重新run函数
这种做法在 C++ 中并不常见
相关函数
run() | 线程的⼊⼝函数.. |
start() | 通过调⽤ run() 开始执⾏线程。操作系统将根据优先级参数调度线程。如果线程已 经在运⾏,这个函数什么也不做。 |
currentThread() | 返回⼀个指向管理当前执⾏线程的 QThread的指针。 |
isRunning() | 如果线程正在运⾏则返回true;否则返回false。 |
sleep() / msleep() / usleep() | 使线程休眠,单位为秒 / 毫秒 / 微秒 |
terminate() | 终⽌线程的执⾏。线程可以⽴即终⽌,也可以不⽴即终⽌,这取决于操作系统的调 度策略。在terminate() 之后使⽤ QThread::wait() 来确保。 |
finished() | 当线程结束时会发出该信号,可以通过该信号来实现线程的清理⼯作。 |
使用
创建一个定时器
但是由于 Qt 的对于修改界面的保护机制,我们只能在主线程中进行修改
准备工作
ui中拉取一个定时器
重写run
创建一个类
发送信号
创建一个线程
启动线程
计时器运行流程
多线程运用场景
多线程是为了充分利用 CPU 的计算资源,特别是多核CPU的,现在的电脑基本上是多线程的
用户体验和速度的取舍
在大部分情况下,客户端的用户体验要大于速度
通常多线程都是用于等待 IO 的操作,这类的事件通常很消耗时间
因此对于qt中的多线程运用场景一般还是中处理 密集IO 操作上