2012-07-26 227 views
1

首先,我使用舊式的信號和插槽,以及QThreads。PyQt信號和插槽,線程之間傳遞對象

我有兩個線程,一個用於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._state也會改變?

回答

0

訪問傳遞的對象是而不是隱含線程安全。對象通過引用傳遞信號,因此兩個線程都將在同一個對象上運行。