2012-07-26 3 views
1

처음으로 이전 스타일의 신호와 슬롯 및 QThread를 사용하고 있습니다.스레드간에 객체를 전달하는 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

전달 된 개체에 대한 액세스는 이 아니며 암시 적으로 스레드로부터 안전합니다. 객체는 참조를 통해 신호를 전달되므로 두 스레드가 동일한 객체에서 작동합니다.