2012-05-12 12 views
2

私はQLocalServerのGUIプログラムを持っています。クライアントから接続があるたびに、何をすべきかを尋ねるダイアログがポップアップします。Qtでこのスレッドの問題をどのように解決すればよいですか?

同時に複数の接続が受信された場合、複数のダイアログが同時にポップすることがあります。それらをキューに入れる方法はありますか?

私はQMutexを使用しようとしましたが、GUIスレッド全体がこぎれてしまいました。

これに対する共通の/正しい解決策は何ですか?

答えて

2

キューのデータ構造を使用するだけです。つまり、着信接続をキューのデータ構造に入れてから、ダイアログが閉じられると(たとえば)キューに接続があるかどうかを確認します。はいの場合は、次の処理を行います。接続が確立され、キューが空の場合はすぐに処理します。 QMutexはGUIスレッドをブロックする可能性があります。追加のスレッドが生成されていない可能性があります。実際には、QLocalServerのコールバックであり、インバウンド接続を通知する新しいスレッドではありません。

+0

キューオブジェクトから新しいタスクをループして取り出すワーカースレッドでこれを常に行います。 – jdi

+0

2つのスレッドがありますか? GUIスレッドと1つのワーカースレッド?どのようにダイアログを表示するには、ワーカースレッドからGUIスレッドをトリガーしますか? –

+0

@ antti-huima:スレッドでシグナルを出します。作業員を始動するときにguiが信号に接続します。 – jdi

関連する問題