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



首先,我使用老式的信号和插槽以及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

我的问题如下:访问传递的对象线程安全吗?如果工作人员更改了object_to_pass的某些属性,即self,会发生什么_州也变了?

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

最新更新