在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网络通讯模块设计与实现(四)

C++/Qt网络通讯模块设计与实现(四)的更多相关文章

  1. C#进阶系列——DDD领域驱动设计初探(四):WCF搭建

    前言:前面三篇分享了下DDD里面的两个主要特性:聚合和仓储.领域层的搭建基本完成,当然还涉及到领域事件和领域服务的部分,后面再项目搭建的过程中慢慢引入,博主的思路是先将整个架构走通,然后一步一步来添加 ...

  2. k8s网络之设计与实现

    k8s网络主题系列: 一.k8s网络之设计与实现 二.k8s网络之Flannel网络 三.k8s网络之Calico网络 K8s网络设计与实现是在学习k8s网络过程中总结的内容.在学习k8s网络各种插件 ...

  3. 基于VC++的网络扫描器设计与实现

    本文正文其实是自己的毕业论文,现在搬上来有两个原因. 一是之前大学的文档都放在百度网盘上,大概去年的时候百度网盘改版搞得不太稳定,文件夹移动次数一多里边就会有一些文件丢失了,也没有很在意.但前几天看申 ...

  4. DDD领域驱动设计初探(四):WCF搭建

    前言:前面三篇分享了下DDD里面的两个主要特性:聚合和仓储.领域层的搭建基本完成,当然还涉及到领域事件和领域服务的部分,后面再项目搭建的过程中慢慢引入,博主的思路是先将整个架构走通,然后一步一步来添加 ...

  5. Qt网络编程-书接上文,浅谈TCP文件收发,以及心跳包

    qt网络编程-书接上文,浅谈文件收发 上文Qt网络编程-从0到多线程编程中谈到 在qt中的qtcpsocket通讯的用法,接下来浅谈一下关于tcp通讯的实际应用,当然了由于是浅谈,也不能保证其功能的完 ...

  6. Qt的皮肤设计(Style Sheet)

      Qt的皮肤设计,也可以说是对Qt应用程序的界面美化,Qt使用了一种类CSS的样式规则QSS. 一.Style Sheet的应用 1.直接在程序代码中设置样式,利用setStyleSheet()方法 ...

  7. Golang 网络爬虫框架gocolly/colly 四

    Golang 网络爬虫框架gocolly/colly 四 爬虫靠演技,表演得越像浏览器,抓取数据越容易,这是我多年爬虫经验的感悟.回顾下个人的爬虫经历,共分三个阶段:第一阶段,09年左右开始接触爬虫, ...

  8. python学习之路网络编程篇(第四篇)

    python学习之路网络编程篇(第四篇) 内容待补充

  9. Qt网络编程QTcpServer和QTcpSocket的理解

    前一段时间通过调试Qt源码,大致了解了Qt的事件机制.信号槽机制.毕竟能力和时间有限.有些地方理解的并不是很清楚. 开发环境:Linux((fedora 17),Qt版本(qt-everywhere- ...

  10. 从底层谈WebGIS 原理设计与实现(四):WebGIS中通过行列号来换算出多种瓦片的URL 之离线地图

    从底层谈WebGIS 原理设计与实现(四):WebGIS中通过行列号来换算出多种瓦片的URL 之离线地图 作者:naaoveGI…    文章来源:naaoveGIS    点击数:1759    更 ...

随机推荐

  1. 网络层-ICMP

    为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP ICMP报文被封闭在IP数据报中发送 封包格式 主机或路由器使用ICMP来发送差错报告报文和询问报文 差错报告报 ...

  2. 使用jquery+layui 做一个输入搜索下拉 类似lay-search

    效  果: 因为需要做一个搜索出现下拉然后点击 自动填装input 内容的 东西. 一开始使用lay-search 的控件去弄. 但是无法控制里面的内容.所以用了一些笨方法去弄 废话不说了, html ...

  3. spring的作用

    Spring能有效地组织你的中间层对象,无论你是否选择使用了EJB.如果你仅仅使用了Struts或其他的包含了J2EE特有API的framework,你会发现Spring关注了遗留下的问题.Sprin ...

  4. setAttribute动态添加

    btnDel.setAttribute('type', 'button'); //type="button" btnDel.setAttribute('value', '删除'); ...

  5. ZSTUOJ刷题⑩:Problem B.--零起点学算法103——查找最大元素

    Problem B: 零起点学算法103--查找最大元素 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 9951  Solved: 4793 Descri ...

  6. Jmeter添加Plugins Manager插件管理器后增加常用base类函数

    路径为/lib/ext/jmeter-plugins-manager-1.7.jar 放置即可打开插件管理器: 搜索Custom JMeter Functions后自动下载安装即可:

  7. DER编码

    1. Attribute Type编码 ​ 对于标识串,采用低标识编码方式,只需1个字节.OBJECT IDENTIFIER的 tag为Ox06;class选择universal,则位8和位7为0,O ...

  8. PHP Redis - List (列表)

    Redis列表是简单的字符串列表,按照插入顺序排序. 一个列表最多可以包含  232-1 个元素 (4294967295, 每个列表超过40亿个元素) 插入元素在列表头部(lPush,Lpushx) ...

  9. 前端自动化测试框架Cypress环境搭建

    1. 下载安装node.js(之前的随笔里写过安装nodejs具体步骤这里不过多介绍了) 下载地址:https://nodejs.org/en/ 2.安装路径(这是安装完成nodejs的路径) 3. ...

  10. sqlite3 一条语句替换全表某个字符字段中的某个字符串

    update not_match_files set policy_id_tms = replace(policy_id_tms, substr(policy_id_tms,instr(policy_ ...