C++/Qt网络通讯模块设计与实现(四)
  qI3uiDeO2hkn 2023年11月02日 45 0
C++

C++/Qt网络通讯模块设计与实现(三)中提到了一个概念,即接受者所依附的线程;关注我微信公众号的技术朋友留言对该概念还是不解,这节就单独讲述这个概念的理论与实际应用,这种应用无处不在,因为与Qt的信号槽、线程相关,大家需掌握。接下来从 Qt::ConnectionType,示例源码,结果论证,归纳总结等四个方面进行全方面讲解。

Qt::ConnectionType

[static] QMetaObject::Connection QObject::connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type = Qt::AutoConnection)

Qt::ConnectionType是信号槽连接函数的第五个参数,有如下值

大家主要使用Qt::AutoConnection、Qt::DirectConnection、Qt::QueuedConnection三种值

自动连接(Qt::AutoConnection)

  • 默认值
  • 发射信号的线程与接受者所依附的线程为同一个线程,则等同于直接连接,否则等同于队列连接

直接连接(Qt::DirectConnection)

  • 槽函数会在信号发送时直接被调用(类似函数直接调用)
  • 槽函数在发送信号的线程里执行

队列连接(Qt::QueuedConnection)

  • 当控制权回到接受者所依附线程的事件循环时,槽函数被调用
  • 槽函数在接收者所依附线程执行

示例源码

  1. 两个线程,即主线程与ResponseThread线程
  2. 在主线程里触发信号
  3. 验证槽函数在哪个线程里执行
  4. 加深理解所依附的线程的概念

备注::下述代码可以直接编译运行。

详细讲解请点击C++/Qt网络通讯模块设计与实现(四)

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  8Tw5Riv1mGFK   2024年05月01日   82   0   0 C++
  BYaHC1OPAeY4   2024年05月08日   58   0   0 C++
  yZdUbUDB8h5t   2024年05月05日   44   0   0 C++
  oXKBKZoQY2lx   2024年05月17日   61   0   0 C++
qI3uiDeO2hkn