0

ウィジェットのシグナル関数を複数のスレッドから同時に呼び出すのは安全ですか? Qt は、複数のスレッドがウィジェットのシグナルを同時に呼び出すときに、ある種の内部ミューテックスを使用して独自のデータ構造のセキュリティを提供しますか?

私が理解しているように、それは安全であり、シグナル関数のN個の同時呼び出しは、接続されたシグナルのN個の連続呼び出しにつながります。

私は正しいですか?

PS シグナル関数を呼び出すスレッドは、boost で作成されます。これはこの質問にとって重要ではないと思います。スレッドは GUI だけに関連するものではないため、別のスレッドを使用することはできませんが、プログラムの多くの部分を処理します。

4

3 に答える 3

1

これについて簡潔に言うと、シグナルを呼び出すのではなく、シグナルを発信します。次に、Qt は信号が接続されているスロットの発火を内部的に処理します。

シグナルを発行してスロットを起動させることは、接続の種類によってスレッドセーフである場合とそうでない場合があります。

詳細については、こちらをお読みください。

また、boost によって作成されるスレッドが問題になると思います。シグナル/スロット メカニズムは、QThread と QObject のインフラストラクチャに依存しています。ブースト スレッドではなく QThread を使用できれば、より簡単で良いかもしれません。

于 2013-08-28T02:01:17.887 に答える