問題タブ [qeventloop]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - QThreadPool 内でスロットを実行する
スレッドで実行する必要があり、スロットのイベント ループが必要なクラスがあります。現在は でうまく実行していますがmoveToThread()
、使用したいのですQThreadPool
が、問題が発生しました。
QThreadPool
私のランナブルのrun()
メソッドで実行すると、プールされたスレッドから呼び出されます(これを で確認しますQThread::currentThread()
)が、プールされたスレッドでスロットが実行されていないため、オブジェクトがプール内のスレッドに移動されていないと思います。
これは、スロットがレシーバーのスレッドで実行されていることを知っているためだと思います。これは、moveToThread()
メソッドとQThread
.
QRunnable
プールされたスレッドで完全に実行されるようにするにはどうすればよいですか? それとも、私が間違っているか、間違っていると理解していますか?
次の POC は、問題を示しています。
foo.h
foo.cpp
main.cpp
ただし、実際のコードでは、ネットワーク上でデータを受信した後であるため、信号はすぐには送信されないことに注意してください。
PS: POC はこちらからもご覧いただけます。
qt - Qt 4.8x で QThread をサブクラス化しない場合、どのように QEventLoop を使用する必要がありますか?
QThread を操作するには 2 つのアプローチがあることを読みました。QObject を継承する Worker クラスがある場合 ( http://mayaposch.wordpress.com/2011/11/01/how-to-really-truly-use-qthreads-the-full-explanation/のように)、シグナル/スロットを操作するためにローカル QEventLoop を作成および管理するにはどうすればよいですか? 私はメモリリークをしたくありません。http://codethis.wordpress.com/2011/04/04/using-qthread-without-subclassing/で説明されているワーカーで QNetworkAccessManager をどのように作成する必要がありますか?
c++ - イベントループがあるスレッドとないスレッドの違い
イベントループのあるスレッド
別のスレッドで QTcpServer オブジェクトを作成し、着信接続をリッスンして発生時に処理します。ある時点で が削除され、スレッドでイベントを生成するものは何もありません。
手動で削除しないと、スレッドは無限ブロック (メモリを使用するが CPU を使用しない) に入りますか?
イベントループのないスレッド
QTcpServer オブジェクトが作成され、リッスンしています。
QTcpServer.listen ()は、スレッドがすべてのコードを実行して自然に終了するのを妨げていますか?
着信接続はどうですか?手動でポーリングする必要がありますか?
c++ - ブロックせずにQtイベントプロセスを開始するには?
これが私のシナリオです: dll があります (バックエンドに Qt があり、イベント ループが開始されていません)。この dll でシグナルスロット通信を実行できます (スレッドは 1 つだけです)。この dll で QFileSystemWatcher の機能を使用したいと思います。しかし、QFileSystemWatcher は独自のスレッドを開始するように見えますが、イベント プロセスがないため、メイン スレッドと通信できません。
したがって、基本的には、ブロックされることなくイベント処理を開始する方法が必要です!
python - Qt: 複数のシグナルを待つ方法は?
PySide と Qt を使用して、ある種の GUI テスト ライブラリを開発しています。これまでのところ、テスト ケースで 1 つの条件 (シグナルやタイムアウトなど) が発生するのを待つ必要がある場合は非常にうまく機能しますが、私の問題は、データ検証に進む前に複数の条件が発生するのを待たなければならないことです。
テスト ランナーは、メイン スレッドをあまり妨害しないように、独自のスレッドで動作します。シグナル/タイムアウトの待機はイベント ループで発生します。これはうまく機能する部分です (簡略化された例)。
待機は同期的でなければならないため、イベント ループが有効ですが、複数のシグナルに対しては機能しません。もちろん、複数の条件のいずれかを待つことは可能ですが、複数の条件/シグナルがすべて発生するのを待つことはできません。それで、これをどのように進めるかについて何かアドバイスはありますか?
受信したシグナルの数をカウントし、必要な数に達すると ready() シグナルを発行するヘルパー クラスについて考えていました。しかし、これは本当に最善の方法でしょうか?ヘルパーは、特定のシグナルの「インスタンス」が 1 つだけ考慮されるように、各送信者もチェックする必要があります。