C++/Qt网络通讯模块设计与实现(四)

打印 上一主题 下一主题

主题 1077|帖子 1077|积分 3235

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


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


  • 两个线程,即主线程与ResponseThread线程
  • 在主线程里触发信号
  • 验证槽函数在哪个线程里执行
  • 加深理解所依附的线程的概念
备注::下述代码可以直接编译运行。
详细讲解请点击C++/Qt网络通讯模块设计与实现(四)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

东湖之滨

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