問題タブ [qthread]
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.
python - スレッドからデータを受信した後、pyqtのメインウィンドウがクラッシュし続ける
QThreadを開始し、ネットワークからのデータを待機するQMainWindowがあります。データを受信するとUIを更新します。
問題は:時々クラッシュすることです。そして時々そうではありません、私がするすべては私がそれを始めてデータを待つことです。
これがスレッドクラスです:
なぜこうなった ??メインウィンドウ自体は正常に機能することに注意してください。
関数(updateCombo)も正常に機能しています(クラスから呼び出す場合)。
しかし、データを送信するとメインウィンドウがクラッシュし続けます!理由は何ですか?
qt - QThreadからGUIウィンドウを開始するにはどうすればよいですか?
クライアントがシングルスレッドであるチャットプログラムに取り組んでいますが、サーバーは接続されたクライアントごとに新しいスレッドを開始します。私のクライアントコードはしっかりしていると思いますが、サーバーは私を当惑させています。
現在、QTcpSocket
着信接続を検索する派生クラスがあり、接続が検出されると、新しいを開始しQThread
ます。実行すると、 (チャットウィンドウである)QThread
のインスタンスが作成され、表示されます。QMainWindow
次のようなstderrorのエラーが発生していますが、QMainWindow
表示されないため、現時点ではチャットできません。
私の質問は次のとおりです。
QThread
の親にする必要がありQMainWindow
ますか?- 私はこれを完全に間違った方法で行っていますか?
- これが期待どおりに機能しない理由や修正方法に関するその他の一般的なアイデアも大歓迎です。
multithreading - シグナル/スロットが複数のスレッドで機能しないのはなぜですか?
なぜ呼び出されないのかを理解しようとしてb_slot()
います。何が起こっているのか、なぜb_slot()
呼び出されないのかを誰かが説明できますか?
c++ - QThreadで作成されたQObjectは、内部信号/スロット接続を失います
派生オブジェクトが作成されるワーカーQThread
があります。QObject
オブジェクトは、他の2つの派生オブジェクトの集合体であるQObject
ため、2つの内部オブジェクトを信号でリンクおよびバインドするための内部接続があります。
ワーカーQThread
はのメンバーであるQPlugin
ため、プラグインの存続期間中ずっと存在します。
私が抱えている問題は、オブジェクトがアプリケーションの他の部分と正常に相互作用しているにもかかわらず、それらの内部接続が壊れているように見えることです。実験として、メインスレッドでオブジェクトを作成しようとしましたが、内部接続が機能しているので、これは間違いなく私が間違っていることですQThread
。
また、オブジェクトをメインスレッドに戻してみましたが(確かに、これらの内部接続が確立された後)、効果はありませんでした。内部接続のすべてのタイプの接続(直接、キューなど)を循環しましたが、効果がないか、デッドロックエラーが発生しました。接続を通過したすべてのタイプが登録されます。
オブジェクトは含まれている2つのオブジェクトの親QObject
であり、すべて同じスレッドに存在するため、違いはありませんが、除外するために親をNULLに設定してみましたが、当然のことながら効果はありませんでした。は何の親でもQThread
ありません。
私が確信していない唯一のことは、オブジェクトがメインスレッドにあるファクトリシングルトンから作成されているが、ワーカースレッドから呼び出されているということです-それで、それは誰に属しているのですか?私はこれらの接続を切断するために何をしているのか(またはしていないのか)について完全に途方に暮れているので、どんな助けでも大歓迎です。アプリケーションの関連部分のコードは次のとおりです。
これはワーカースレッドでのオブジェクト作成呼び出しです。コンテキストでは、オブジェクトはOBJ
インポーターからのポリメッシュです。
私のアプリには非常に広範なプラグインアーキテクチャがあるため、実際のスレッド開始コードは抽象ワーカークラスに抽象化されます。
関連するすべてのコードが多くのクラスに分散しているため、すべてをリストすることはしません(この質問は十分に長いです)が、他に何かを見る必要がある場合は、遠慮なく質問してください-私はこれについて得ることができるすべての助けが必要です1。
qt - Object::connect: そのようなシグナルはありません MyThread::MySignal()
- 私のプログラムには 1 つのスレッド クラスがあります。
- シグナルとスロットは両方とも、そのスレッド クラス自体にあります。
- ヘッダー ファイルとソース ファイルは別です。
- main ()関数はソース ファイル自体にあります。
main ()では、次のようにconnectを使用しています。
.proファイルは次のとおりです。
実行時に上記のエラーが発生しました。ガイドしてください。
c++ - QReadWriteLock 再帰モードが機能しない
gcc 4.4.3 を使用する Linux qt 4.7.4 では、次のコードは正常にコンパイルされ、実行時エラーは発生しません。
ロックは同じスレッドによって数回ロックされ、何も起こりません。マニュアルによるとhttp://doc.qt.io/archives/qt-4.7/qreadwritelock.html
ロックは、同じスレッドによって一度だけロック可能であるべきです。これは重大なバグですか、それともマニュアルを誤解していますか?
Chris への返信: ロックは NonRecursive でも数回ロック解除する必要があります。1 つのロック解除がコメント アウトされている場合、次のコードは "Writing" を出力しません。
qt - イベントリストにイベントが多すぎる場合、なぜアプリケーションがクラッシュしたのですか?
次のコードはクラッシュし、Linuxをハングさせることさえありますが、それについて何かアイデアはありますか?
pyqt4 - スレッドの使用時にQWebPage loadFinishedシグナルが呼び出されませんか?
セカンダリ スレッドで webkit を使用してネットワーク リクエストを実行しようとしています。また、同じスレッドでデータの破棄などのすべての処理を実行しようとしています。しかし、QWebPage のシグナル loadFinished が接続されていない理由がわかりません。まだまだ勉強中なので教えてください。