如何确保在特定线程的上下文中执行插槽?

时间:2017-07-20 06:53:11

标签: c++ qt

假设我有一个发出信号X的线程A,还有一个线程B,它有一个信号X所连接的槽Y.如果插槽Y在线程A的上下文中执行,我是否还应该担心?或者它会在我假设的线程B的上下文中执行吗?

1 个答案:

答案 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的更多信息。