目录
描述
相关函数
使用
准备工作
重写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 操作上