2

QUDPsocket を含む QThread があります (socket は QThread::run() に対してローカルではないメンバーです。おそらく、私が読んでいるものから変更する必要があります)。この QThread は、QMainWindow クラス、つまり GUI スレッドでインスタンス化されます (スレッドへの移動は呼び出しません)。waitForReadyRead を使用しても安全ですか、それとも main.cpp で QThread をインスタンス化するか、スレッドセーフにするために moveToThread() を呼び出す必要がありますか? 現在の方法では、waitForReadyRead への呼び出し内で断続的な二重解放例外が発生します (3 分後に何日も取得できない場合があります)。

4

1 に答える 1

1

のQt ドキュメントを参照してくださいQUdpSocket。クラスがreentrantであることを説明するメモがあります。また、Qtのドキュメントから:

...各スレッドがクラスの異なるインスタンスを使用する限り、そのメンバー関数を複数のスレッドから安全に呼び出すことができる場合、クラスは再入可能であると言われます。

したがって、あなたの質問に答えるために、使用しているインスタンスが使用しているスレッドのコンテキスト内でインスタンス化されているQThreadことを確認する限り、の親が何であるかは実際には問題ではありません.QUdpSocket

于 2010-02-28T09:43:48.720 に答える