假设我有一个发出信号X的线程A,还有一个线程B,它有一个信号X所连接的槽Y.如果插槽Y在线程A的上下文中执行,我是否还应该担心?或者它会在我假设的线程B的上下文中执行吗?
答案 0 :(得分:3)
是的,你应该担心。这是QObject::connect
中第5个参数的目的。
如果你这样做:
connect(A,X,B,Y,Qt::DirectConnection);
然后A
将从其自己的线程中调用Y()
。但是,如果你这样做:
connect(A,X,B,Y,Qt::QueuedConnection);
A
会将Y()
添加到B
的事件队列中,B
稍后会在其自己的主题中执行Y()
。
有关此can be found here的更多信息。