1

まず、古いスタイルの信号とスロット、およびQThreadsを使用しています。

2つのスレッドがあります。1つはGUI用で、もう1つはワーカー用です。ワーカーからシグナルが発行されると、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も変更された場合はどうなりますか?

4

1 に答える 1

0

渡されたオブジェクトへのアクセスは、暗黙的にスレッドセーフではありません。オブジェクトは参照によってシグナルを介して渡されるため、両方のスレッドが同じオブジェクトで動作します。

于 2012-08-14T17:50:26.400 に答える