QT 信号槽 异步事件驱动 单线程 多并发

利用好Qt 模块的异步信号槽,单线程同样可是实现很强悍的的并发能力。应付正常的功能是足够的。

需要注意的是:该模式本质上为 单线程 事件驱动异步模式,所以需要做的事优化你的业务代码构架以应付性能与并发压力需求。

(当然能够实现异步事件驱动,在Qt模块内部还是启动了更多的子服务线,但在用户代码层面确实单线程模式)。

 

案例场景:

客户端程序,连接多服务端,接收服务端的上传数据。

20个TCP服务端启动。客户端APP逐个建立连接;

单个服务端上传吞吐:一个PDU 大小: 512*2*20字节    上传频率:50-100毫秒一个PDU

 

普通台式机:CPU 占用<10%

 

非特定场合,多线程不一定是首选。

转载于:https://www.cnblogs.com/Esperanto/p/7527169.html

Qt信号机制是Qt框架中重要的一部分,能够实现对象间的异步通信。它具有以下几个优势: 1. 简化对象间的通信: 通过信号机制,我们可以将代码逻辑进行模块化,对象间的通信更加直观明了。当一个对象发出一个信号时,其他对象可以通过函数来响应信号,实现对象间的无耦合通信。 2. 线程安全: Qt信号机制天生支持多线程,可以安全地在不同的线程中进行信号的连接和触发。这个特性使得Qt可以更方便地进行并发编程,提高程序的性能和响应能力。 3. 支持跨对象和跨线程的通信: 正是由于Qt信号机制的特性,使得我们可以在不同的对象、不同的线程之间进行通信。这样我们可以将耗时操作放在单独的线程中执行,不会阻塞主线程的运行。 然而,Qt信号机制也存在一些不足之处: 1. 代码可读性较低: 由于信号的连接完全通过函数调用来实现,代码中可能存在大量的connect调用,使得整个代码可读性较低,难以理解。 2. 运行时错误: 由于Qt信号机制在编译阶段无法进行类型检查,因此存在连接信号时的类型错误难以发现的问题。这可能导致运行时错误的发生,增加了调试的困难。 3. 不支持返回值: Qt信号机制本质上是一个触发和响应的过程,函数无法返回值给信号函数。这使得在需要获取函数的返回值时较为困难,需要通过其他方式来实现。 综上所述,Qt信号机制在简化对象间通信、线程安全和跨对象、跨线程之间通信方面具有明显优势,但也存在代码可读性低、运行时错误和不支持返回值等不足之处。对于开发者来说,需要权衡使用信号机制的优势和不足,根据具体需求进行选择和使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值