QT信号量和槽还是蛮方便的,尤其是在使用多线程的时候基本不需靠考虑锁的问题。那么,这是什么样的工作原理,使其有这么大的优点呢?
本文将一种通俗易懂的方式对其进行阐述。在解释之前,先贴一个链接:
https://www.cnblogs.com/findumars/p/5031239.html
本链接主要对connect的第五个参数连接方式做了解释和理解。
为了更通俗的理解,本文将针对队列连接(Queued Connection)和直接连接(Direct Connection) 做另外一种解读。
从字面意思来看,直接连接就是在本线程直接调用的意思。队列连接就是以类似消息队列的方式进行槽函数的调用,类似于:客户端通过消息的方式通知服务端,服务端则读取消息队列并按顺序执行对应的槽函数。发送消息的接口emit只是一个发送接口而已,不可能有共享数据的问题;槽函数的执行是按事件的先后顺序执行。因此,整个框架和具体工作流程不需要考虑锁的问题。