Qt插槽同时断开并从不同线程调用

时间:2013-04-08 22:31:39

标签: multithreading qt qthread

我是Qt的新手。我没有在合理的时间内找到答案,于是决定在这里问。

我有一个帖子,让我们用Qt对象称它为Thread1,它有一个连接的插槽。信号从同一线程(Thread1)发出。 我正在断开此插槽与另一个Thread2

此操作线程是否安全? 如果发出信号并且插槽正好同时断开,是否有任何问题?

1 个答案:

答案 0 :(得分:1)

只看文档,对我来说看起来很安全:

http://qt-project.org/doc/qt-4.8/qobject.html

  

注意:此类中的所有函数都是可重入的,但connect(),connect(),disconnect()和disconnect()也是线程安全的。

http://qt-project.org/doc/qt-4.8/qobject.html#disconnect

  

注意:此功能是线程安全的。

当您将一个线程的信号连接到另一个线程的插槽时,还要确保使用“排队连接”。如果在连接期间两个对象碰巧都在同一个线程中,则自动连接可能会行为异常(并进行直接连接)。

希望有所帮助。

编辑:有关线程安全的更多信息:

http://qt-project.org/doc/qt-4.8/threads-reentrancy.html

http://qt-project.org/doc/qt-4.8/threads-qobject.html