
线程
文章平均质量分 58
wb175208
这个作者很懒,什么都没留下…
展开
-
关于引擎设计的一点设想
在仿真引擎中设计过程中比较重要的内容有时间同步控制、业务数据的流转处理。1.时间同步专门启动一个线程用来计时,采用C++11高精度时间库std::chrono::high_resolution_clock::now()详见之前的文章C++中高精度时间的记录控制在时间线程中,处理线程中不能再进行任何其他的操作,否则会影响时间的精度。当时间间隔到达规定的时间间隔时(10ms),就会触发相应的事件,这个的触发事件就是设置变量值(每次定时器开始的时候,设置变量为false,当时间间隔到的时候设置变量为tr原创 2021-10-10 17:11:52 · 242 阅读 · 2 评论 -
Qt中信号槽连接方式Qt::QueuedConnection了解
大家都知道Qt中信号槽的连接方式有五种:其中Qt::QueuedConnection就是其中之一,他主要就使用在不同线程中,当两个线程中处理数据的速度不一致的时候,使用这种连接方式,可以提供用户的使用体验。Qt::QueuedConnection:使用队列的连接方式,在不同的线程中,信号的发出对象和槽函数的接收对象分别在不同的线程中,数据处理过程在工作线程中,数据展示在主线程中。这时需要把处理完成的数据在界面上显示出来,就需要通过信号槽的方式把处理完成的数据展示出来。#pragma once#inc原创 2021-08-12 17:14:57 · 16166 阅读 · 3 评论 -
Qt 使用moveToThread创建线程调用
QT中使用多线程有很多种方法:1.继承QThread,并且实现run方法2.继承QRunable,实现run方法3.使用moveToThreadmoveToThread主要是让当前继承在QObject中类对象关联到QThread中,通过信号槽的方式实现线程的启动和结束.工作类:#pragma once#include <QObject>class Worker : public QObject { Q_OBJECTpublic: Worker(QObject *pa原创 2020-07-21 11:02:55 · 1015 阅读 · 4 评论 -
Qt 线程池的使用以及和主线程的消息同步
Qt中线程已经很早就出现了,关于多线程的使用的意义主要是为了减轻主线程的压力,提高用户的体验。 例如:在主线程中需要加载数据库中的很多表格,那么就可以考虑把多表格的读取放到工作线程中去,可以多加载几个线程目的就是加快读取表格的速度。 通过线程池和QRunable实现多线程。1.编写QRunableclass LoadTableRunable : public QObject, ...原创 2018-08-16 19:08:42 · 2584 阅读 · 0 评论 -
Qt主线程和工作线程更新界面问题
Qt在运行时会开启一个主线程,如果没有开启工作线程的话,所有界面上的操作都是在主线程,包括更新界面或者处理数据等操作。大家都知道如果处理数据比较多的话,最好是在单独开启一个线程来处理数据,这样就不会影响主线程的运行。如果在工作线程中更新界面,会如何呢?线程类:#pragma once#include &amp;amp;lt;QThread&amp;amp;gt;class QtGuiThread;class ...原创 2018-09-12 10:18:22 · 18141 阅读 · 15 评论 -
Qt多线程同步
一、Qt中使用多线程时候,多线程的同步就是一个不可避免的问题。多线程的同步就是使多个线程在同时执行同一段代码的时候,有顺序的执行,不会出现同时有两个或者多个线程执行同一段代码的情况,特别是在对变量或者文件执行写操作的时候。也就是所谓的线程安全,线程安全指的是这段代码在一个线程或者多个线程执行的过程中,不加同步机制或...原创 2018-09-15 12:06:04 · 10483 阅读 · 0 评论 -
Qt中QRunable继承QObject出现的问题
QT项目中有一个功能,需要把数据库的数据中加载出来然后在界面上显示出来,由于需要加载的数据表比较多,所有优先想到了使用多线程来加载数据库。1.定义一个类继承QRunable接口,我还想让它可以发送信号,以便可以观察加载的进度,同时这个类也要继承QObject,不要忘了加上宏 Q_OBJECT头文件class LoadTableRunable : public QRunnable, publi...原创 2018-12-11 13:30:18 · 2110 阅读 · 0 评论 -
QT线程之“旁门左道”之二:多个QRunable运行结束检测
上一篇文章中提到在QT中使用线程类QThread,但是QT中还有一个同样可以实现多线程那就是QRunable,这个QT提供的轻量级的线程处理机制,关于QRunable的使用可以详见我这篇文章Qt 线程池的使用以及和主线程的消息同步。QRunable可以通过线程池来控制,QThreadPool线程池是一个全局的单例模式,使用也是比较方便的,但是如何检测同时运行的QRunable线程结束了呢?有的同...原创 2019-01-22 10:57:41 · 1399 阅读 · 7 评论