Qt多线程

偏执的太偏执、 2022-09-17 08:29 229阅读 0赞

今天学习Qt的多线程,在学习多线程主要是两个方面。一是多线程的基础概念,二是多线程的同步,三是怎么和主线程进行通讯。

三.Qt 的应用程序开始执行的时候,只有一个主线程在运行,只有这个主线程是可以创建QApplication或者QCoreApplication的对象,并且可以对创建的对象调用exec()。

在这个主线程上面可以开始由QThread创建的对象的新的线程。这些由QThread创建的对象的新的线程之间的通信,是通过使用含有互斥量,读写锁,信号量或者等待条件的共享变量来实现的。但是运用这些技术没有任何一个是可以用来和主线程进行通信的,因为他们会造成锁住事件循环并且会冻结用户界面。

那么主线程和次线程是怎么通讯的呢?

Qt提供了一个解决的方案,就只在线程之间使用信号-槽的连接,通常情况下,信号和槽函数的同步的,就是一个信号被发射,使用直接函数就可以立刻调用其关联的多个槽。但是也有不同步的情况,不错这个问题可以通过修改QObject::connect()中的第五个参数来改变。

注意点:

①写一个qthread子类,除了run()这个函数是在次线程执行的,其它函数都是在主线程被调用的,因为qthread类就是一个Qobject,它是在主线程创建的,自然它的那些非run()函数以及各种数据成员都属于主线程。

发表评论

表情:
评论列表 (有 0 条评论,229人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Qt线方案分析

    Qt多线程方案分析 在Qt应用程序中,多线程是实现高性能和稳定性的关键所在。Qt提供了强大的多线程支持,使得开发人员能够轻松地创建自己的多线程应用程序。本篇文章将介绍Qt多线

    相关 QtQt中的线技术

    Qt提供了许多用于处理线程的类和函数。 Qt程序员可以使用以下四种不同的方法来实现多线程应用程序。 QThread:具有可选事件循环的低级API `QThread`是Q

    相关 Qt线

    今天学习Qt的多线程,在学习多线程主要是两个方面。一是多线程的基础概念,二是多线程的同步,三是怎么和主线程进行通讯。 三.Qt 的应用程序开始执行的时候,只有一个主线程在运行

    相关 Qt线的使用

    最近项目中提出了新的需求,需要采集和收集图片。因为是高速相机,按照帧率至少200FPS的速度计算的话,30秒时间的图片也就是6000帧,同时要保持尽量不掉帧。因此这个开发任务就

    相关 QT线

    QT多线程,QT4.7之前是承继 QThread 的方式,比较简单,而 QT5之后,使用了信号和槽的方式,比较灵活。(版本信息可能有误) 下面是对QT线程信息的注意事项

    相关 Qt线使用数据库

    【写在前面】 最近在多线程环境中使用数据库,结果出现了一些比较有意思的问题。 然后也找到了原因和解决的办法,这里记录、分享一下过程。 ----------------