雄安智能网站建设方案,可以做游戏的网站有哪些内容,怎么把自己电脑建设网站,乐清网站改版概述
在学习QT线程的时候我们首先要知道的是QT的主线程#xff0c;也叫GUI线程#xff0c;意如其名#xff0c;也就是我们程序的最主要的一个线程#xff0c;主要负责初始化界面并监听事件循环#xff0c;并根据事件处理做出界面上的反馈。但是当我们只限于在一个主线程上…概述
在学习QT线程的时候我们首先要知道的是QT的主线程也叫GUI线程意如其名也就是我们程序的最主要的一个线程主要负责初始化界面并监听事件循环并根据事件处理做出界面上的反馈。但是当我们只限于在一个主线程上书写逻辑时碰到了需要一直等待的事件该怎么办它的加载必定会带着主界面的卡顿这时候我们就要去使用多线程。 1. 使用多线程有什么好处 1.1 提高应用界面的响应速度。这对于开发图形界面程序尤其重要当一个操作耗时很长时比如大批量I/O或大量矩阵变换等CPU密集操作整个系统都会等待这个操作程序就不能响应键盘、鼠标、菜单等操作而使用多线程技术可将耗时长的操作置于一个新的线程从而不会影响到主GUI线程从而避免上述问题。 1.2 使多核心CPU系统更加有效当线程数不大于CPU核数时操作系统可以调度不同的线程运行于不同的CPU核上。 1.3 改善程序结构。一个既长又复杂的进程可以考虑分为多个线程成为独立或半独立的运行部分这样有利于程序的理解和维护。 2. 线程编程流程 a. 子类化QThread重写一个类继承自QThread。 b. 重写 run 函数run函数内有一个 while 或 for 的循环:执行耗时操作。 c. 子线程类实现公共方法供主线程传参。主线程调用start方法开始子线程。 d. 设置一个标记为来控制循环的退出或者父线程调用terminate停止子线程。 e. 设置必要的信号和槽做连接--子线程给主线程传参。 注意所有的界面操作都必须在GUI主线程来进行子线程是不允许操作界面上的任何部件 3. 编程实例
QThread 类
Public FunctionsQThread(QObject *parent 0) //构造函数 //pthread_createbool isFinished() const //判断线程是否退出bool wait(unsigned long time ULONG_MAX) //pthread_join(id)//等待某个线程结束最多等待time ms如果时间没有设置那么永远等待。Public Slotsvoid start(Priority priority InheritPriority) //启动线程必须使用startvoid terminate()--杀死线程 //pthread_cancelStatic Public MembersQt::HANDLE currentThreadId() [static] //得到当前执行者线程ID可以直接qDebugvoid sleep(unsigned long secs) [static]void msleep(unsigned long msecs) [static]void usleep(unsigned long usecs) [static]睡眠函数不能在主线程调用会造成界面卡死。Protected Functions virtual void run(); //启动新线程不能直接调用run需要调用start接口//start会启动新线程然后执行run里的代码块。这里在线程中延时了五秒 因为是视频就不好放了感兴趣的可以去试一试结果的话就是LcdNumber一直在增加。 关于线程还有很多使用的方法这里也只是写了一个线程实际运用中我们应该会使用多线程进行操作大家可以自行发挥。