問題タブ [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.
multithreading - *** glibcが検出されました***ダブルフリーまたは破損(ファストトップ):
QByteArrayでclearを呼び出すと、次の例外が生成されます。
*glibcが検出されました* /home / yan / FPS2 / FPS2:ダブルフリーまたは破損(ファストトップ):
0 ?? 1 ??
2無料
3QByteArray:: clear()
4 FPSengine :: getDatagrams
5 FPSengine :: xmitData
6 FPSengine :: getData
7 threadDatalog :: run
8 ??
9 start_thread
10 clone
11 ?? 0
これはqtのバグですか、それとも私のコードと関係がありますか?QObjectsがスレッドセーフではないことは知っていますが(QT定義は、同じオブジェクトインスタンスの同じ関数を呼び出す複数のスレッドではありません)、私の関数にはミューテックスがあります。また、同じ関数が頻繁に呼び出されても、このエラーが発生することはめったにありません。PSこれを防ぐ方法は、env varMALLOC_CHECK_0です。
このURLは同様の問題に関連しており、一部の投稿は、互換性のないバージョンのglibcが原因であると示唆しているようです。
multithreading - QThreadの実装に関する質問
QThreadオブジェクトは、実行の単一スレッドを表します。しかし、OSスレッドは、QThreadオブジェクトが作成されたとき、またはstart()
メソッドが呼び出されたときに作成されますか?
複数のQThreadオブジェクトを配置できるかどうかに興味があります。OSはスレッドを作成し、戻っstart()
た後にそれらを強制終了run()
します。その後、QThreadオブジェクトを再利用できます。しかし、QThreadオブジェクトが何もしていない間はOSリソースを保持したくありません。
(記録のために、私はQtConcurrentとQThreadPoolを知っています、そしていいえ、これらはこの状況での私のニーズを満たしていません)
multithreading - QThreadでQThread.exec()メソッドを呼び出す必要がありますか?
私はexec()
自分のコードを呼び出していませんが、timer
andQUdpSocket
は正常に動作しています。が続くexec()
のを待つために使用されますか?event
更新:は機能していました。これは、 を呼び出してtimer
いなかったためです。つまり、はまだ の一部でした。まあ私はポーリングを使用しています。したがって、 で動作する必要はありませんでした。moveToThread(this)
QThread
QThread
main thread
QUdpSocket
functions
signals
ヒント: 何かを実行する必要がある場合はinit
、 に が必要です。 が不要になるまで呼び出すことができevent loop
ます。これは、プログラムのロード時に実用的です。また、コンストラクターで呼び出す必要はありません (たとえば、内部で呼び出すこともできます)。ポインターを変数にコピーし、ポインターを使用して後で/他の場所を作成するだけです。QThread
delay
moveToThread
signals
run()
this QThread
call
multithreading - メインスレッドに属する QThread で waitForReadyRead を使用できますか?
QUDPsocket を含む QThread があります (socket は QThread::run() に対してローカルではないメンバーです。おそらく、私が読んでいるものから変更する必要があります)。この QThread は、QMainWindow クラス、つまり GUI スレッドでインスタンス化されます (スレッドへの移動は呼び出しません)。waitForReadyRead を使用しても安全ですか、それとも main.cpp で QThread をインスタンス化するか、スレッドセーフにするために moveToThread() を呼び出す必要がありますか? 現在の方法では、waitForReadyRead への呼び出し内で断続的な二重解放例外が発生します (3 分後に何日も取得できない場合があります)。
python - カスタムPyQtシグナルを送信しますか?
シンプルなTwitterクライアントを作ってPyQtと(Q)スレッドを練習しています。Qthreadが2つあります。
メイン/GUIスレッド。
Twitterフェッチスレッド-X分ごとにTwitterからデータをフェッチします。
したがって、X分ごとに、私のTwitterスレッドは新しいステータス更新のセット(Pythonリスト)をダウンロードします。このリストをメイン/GUIスレッドに渡して、これらのステータスでウィンドウを更新できるようにします。
シグナル/スロットシステムを使用して、「ステータス」PythonリストをTwitterスレッドからメイン/GUIスレッドに転送する必要があると想定しています。したがって、私の質問は2つあります。
Twitterスレッドからステータスを送信するにはどうすればよいですか?
メイン/GUIスレッドでそれらを受け取るにはどうすればよいですか?
私が知る限り、PyQtはデフォルトでシグナル/スロットを介してのみPyQtオブジェクトを送信できます。どういうわけか、送信できるカスタムシグナルを登録することになっていると思いますが、私が見つけたこれに関するドキュメントは、私のような初心者には非常に不明確です。PyQtの本を注文していますが、もう1週間で届かないので、それまで待ちたくありません。:-)
UbuntuでPyQt4.6-1を使用しています
アップデート:
これは、機能しないコードからの抜粋です。まず、シグナル( "newStatuses"、作成したばかりの名前)をメイン/GUIスレッドの関数self.update_tweet_listに「接続」しようとします。
次に、Twitterスレッドで、次のようにします。
この行が呼び出されると、次のメッセージが表示されます。
qRegisterMetaType()を検索しましたが、Pythonに関連する理解できるものは見つかりませんでした。
c++ - QWidgetとQThreadの両方から継承するにはどうすればよいですか?
私はこのようなクラスを持っています
上記を実行すると、接続信号に関するエラーが発生します。The error says Reference to "connect" is ambiguous
。両方から継承する方法はありますか?
ありがとうございました
c++ - qapps は正常に動作しますが、ブレークポイントでセグメンテーション違反が発生することがあります
コードにブレークポイントが挿入された場合 (別の場所に置くことができます)、4 ~ 5 個のブレークポイントが停止した後にのみ、セグメンテーション違反を生成する qApp があります。私のコードに問題がありますか、それとも DBG のバグですか? メソッドは QThread クラスの一部です。
基本的に私がしたことは、mandlebrot の例を取り上げ、プログラムに 3 つのインスタンスを含めることです。したがって、プログラムは、3 つの mandlebrot ウィジェットが 1 つずつ並んだメインウィンドウのように見えます。GDBが複数回インスタンス化されたqthreadサブクラスのデバッグをサポートしていない可能性はありますか、それともスレッドセーフではありませんか? 実行時に問題はありません。
qt - Qtを使用してスレッドごとに1つのタイマー
Qtのブロードキャスト送信者の例を変更して、10個のスレッドがあり、各スレッドでタイマーを開始しますが、最初のスレッドのタイマーのみがトリガーされます。スレッドごとに1つのタイマーを実行するにはどうすればよいですか?
multithreading - 3 つの個別の QThreads で 3 つの個別の QImages を描画しても安全ですか?
サブクラス化された QThread を含むクラスに昇格される内部に 3 つのウィジェットを含む QMainWindow があります。それらはそれぞれ、rexpective qthread でローカル QImage を描画します。これは、描画されるとシグナルとともに送信され、スロットから update (mandlebrot の例) を呼び出してレンダリングされます。これは安全ですか、それとも危険ですか?彼らはデータを共有していません。少なくとも私が生成しているデータは共有しておらず、私のコーディング範囲外、つまり Qt によって自動的に生成されたデータを共有できるのか疑問に思っています。
c++ - Qスレッドブロッキングメインアプリ
ボタン用のスロットがあり、スレッドを開始する単純なフォーム UI があります。
run() メソッドは次のようになります。
LoadImage() を呼び出すボタンをクリックすると、UI が応答しなくなります。デバッグ出力として「ping」メッセージが定期的に表示されますが、UI がハングし、何も応答しません。スレッドが個別に実行されないのはなぜですか? パブリック QThread として派生した CameraThread は、Ubuntu 10.04 (x86) リポジトリの QT ライブラリと QT Creator で gcc バージョン 4.4.3 (Ubuntu 4.4.3-4ubuntu5) を使用しています。