前言:
QT在什么时候会用到多线程:
所有的IO操作都要放到线程里面
1、IO操作QIODevice文件IO网络IO(套接字eg:CAN Linux下也是套接字)串口等外设,因为他们不确定什么时候可以读完。
2、耗时的算法eg:文件压缩 信号处理
注意:
1、线程里面尽量少用while(1)+sleep();
尽量使用事件驱动,少用耗时扫描
并发控制简介:
进行时间片轮流:比如让xx执行0.000001秒只要来回转可以看见N多软件一起在“转”;这样让用户看起来都在执行;
实时抢占:严格按照优先级走,优先级高的能抢占优先级低的任务(线程);
一、QThread介绍
QThread类提供了一个与平台无关的线程管理的方法。一个QThread对象管理一个线程。QThread的执行
从run()函数的执行开始,在QT自带的QThread类中,run()函数通 过调用exec()函数来启动事件循环机制,,并且在线程内部处理Qt的事件。在Qt中建立 线程的主要目的就是为了用线程来处理那些耗时的后台操作,从而让主界面能及时响应用户的请求操作。
QThread的使用方法有如下两种:
QObject::moveToThread()
继承QThread类
二、演示线程
2.1 如何创建线程
默认情况,我们新建的类(除少部分外),不支持信号与槽
在class中添加一个Q_OBJECT
左边的类不支持信号与槽;需要手动添加 Q_OBJECT
继承QThread类的线程框架:
头