Qt 的多线程

打印 上一主题 下一主题

主题 2111|帖子 2111|积分 6333

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Qt 中的多线程主要用于处理耗时操作,克制阻塞主线程(UI 线程),从而进步步伐的响应性和运行效率。以下是 Qt 多线程的相关技能总结:
常见的多线程实现方式



  • 继续 QThread 类 :最底子的实现方式,具体步骤为继续 QThread 类,重写其 run() 函数,在 run() 函数中编写线程要执行的代码,然后调用 start() 函数启动线程。例如:
         
    • 定义一个自定义线程类 CameraThread,继续自 QThread,在 run() 函数中进行相机数据采集等耗时操作,并通过信号将采集到的数据传递给主线程。
         
    • 在主线程中创建该线程对象,毗连线程的信号与主线程的槽函数,启动线程后,子线程中的 run() 函数开始执行,主线程则继续运行,不会被耗时操作阻塞。
        
      
  • Worker + moveToThread 模式 :保举使用的方式,更加灵活。实在现步骤为先创建一个工作类(QObject),定义该类的具体工作内容;再创建一个 QThread 对象;然后通过 moveToThread() 方法将工尴尬刁难象移动到子线程;接着毗连子线程的启动信号与工尴尬刁难象的任务槽函数,以及工尴尬刁难象的任务完成信号与主线程的槽函数,最后启动子线程。
         
    • 例如,定义一个 CameraWorker 类,在其中定义数据采集任务的槽函数 doWork(),以及任务完成后的信号 frameReady。在主线程中创建 QThread 对象和 CameraWorker 对象
        


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

杀鸡焉用牛刀

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表