在项目中,需要使用了多线程,并且多个线程的信号发到一个槽,一直在纠结是否需要在槽中加锁,防止多线程同时访问导致出错。
今天查找资料后,知道了并不会出现这样的问题,在Qt信号槽机制中已经处理了此问题。在Connect函数的第五个参数为ConnectionType,可设置多线程下信号槽的执行,
DirectConnection 直接连接 – 信号槽函数在信号发出者所在线程中执行
QueuedConnection 队列连接 – 信号在信号发出者所在线程中执行,槽函数在信号接收者所在线程中执行.
AutoConnection 自动连接 – 多线程时为队列连接方式, 单线程时为直接连接方式
默认情况为自动连接方式.
参考http://blog.youkuaiyun.com/harbinzju/article/details/10813635