【问题标题】:PyQt Signals And Slots, passing objects between threadsPyQt Signals And Slots,在线程之间传递对象
【发布时间】:2012-07-25 09:27:54
【问题描述】:

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

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

作为进程的一部分,worker 还将一个对象传递给插槽,因此我使用以下内容:

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 也会改变?

【问题讨论】:

    标签: pyqt pyqt4 qthread


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2014-08-17
      • 2013-06-17
      • 2012-03-05
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多