PyQt信号和插槽,在线程之间传递对象

时间:2012-07-26 18:03:39

标签: pyqt pyqt4 qthread

首先,我使用旧式信号和插槽,以及QThreads。

我有两个线程,一个用于GUI,另一个用于工作。当从工作者发出信号时,GUI在其自己的线程中处理它。

作为流程的一部分,工作人员也将一个对象传递给插槽,所以我使用以下内容:

self.emit(SIGNAL(my_signal(PyQT_PyObject), self.object_to_pass)

GUI必须解释这个对象;实际上它会读取属性并相应地更新进度条。该槽定义为:

def my_slot(self, my_state):
    self._state = my_state #so object_to_pass comes in from the worker here

我的问题如下:访问传递的对象线程是否安全?如果worker改变了object_to_pass的某些属性会发生什么,即self._state也会改变?

1 个答案:

答案 0 :(得分:0)

对传递的对象的访问是而不是隐式地是线程安全的。对象通过引用传递信号,因此两个线程都将在同一个对象上运行。