問題タブ [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 - QThread の run() メソッド内での宣言と、QThread でのローカル変数としての宣言
次のコード スニペットを検討してください。
および次のコード:
ミューテックス、レースコンディションなどの一般的な理論を知っています。
スレッドが開始された後 (つまり、run() の呼び出し後) に Set が常に呼び出されると仮定すると、ThreadA と ThreadB の実行で "myVariable" を所有するスレッドはどれですか??
このようなシナリオで、メイン スレッドと QThread はどのようにリソースを共有しますか??
QThread (つまり、ThreadA と ThreadB) およびその主なアプリケーション内での myVariable の範囲と有効性は何ですか??
ありがとう、ヴィシュヌ。
c++ - 作業が完了するまで待機してから終了するように QThread に指示する方法は?
1 つのワーカー スレッドを使用する単純なアプリケーションがあります。このワーカー スレッドが開始され、ネットからのファイルのダウンロードを担当する DownloadManager が初期化されます。私のメイン アプリケーション クラスでは、DownloadManager が終了する前に発行されるスレッドに finished() SIGNAL があります。
私の質問は、DownloadManager が作業を終了するまでワーカー スレッドを待機させる方法です。
コード例は次のとおりです。
multithreading - Qthread を使用して事前定義されたクラスをスレッドに移動する
私はあまり優れたプログラマーではなく、QT にまったく慣れていないため、私の言葉遣いは申し訳ありません。
メインとは別の .cpp ファイルに Qt で既にセンサー クラスを作成しています。プログラムを実行するたびに速度が遅くなり、遅延が発生したため、教授はセンサーから値を取得するクラス用に別のスレッドを作成することを提案しました。このクラスを別の新しいスレッドに移動したいと思っていましたが、新しい Qthread の run() 関数の下にすべて (関数呼び出し、シグナルなど) をコピーして貼り付けるだけです。
これが手順ではない場合、基本的な用語のヘルプが非常に有益です.QTインデックス情報を本当に理解していません.
ありがとう
c++ - Qtの例に基づくQThreadからのQtダウンロードファイルが機能しない
こんにちは、無関係なコードをすべてストライプ化した簡単な例をビルドします。問題のあるコードのみが一般的に残ります。スレッドを実行するアプリケーションがあり、このスレッド ワーカー内に、30 個を超えるファイルをダウンロードするはずのダウンロード コードを配置しました。これは、ダウンロード例 Qt に基づいています。 、問題は、QNetworkAccessManager スロットが呼び出されないことです。
ここで何が間違っているのか教えてください。
multithreading - QThread クラスを使用した QT プログラミングのヘルプ、使用方法
前回の説明がわかりにくかったので、もう一度やり直します。
Lego NXTセンサーから40ミリ秒ごとに値を取得するセンサークラスを持つプログラムがあります。仮想世界でopenglを使用して1ミリ秒ごとに車を描画して移動する別の描画クラス(同じスレッドで実行されていると思います)もあります。ここでの問題は、センサーが情報を取得するたびに車が非常に遅く動きが遅いことですが、センサーがオフでデータの取得と入力が行われないと、車はスムーズに走行します。この問題を解決するにはどうすればよいですか。別のスレッドを作成する必要があると思いますが、その方法がわかりません。
注: センサーは車とは何の関係もありません。
python - QThreadを使用したPyQt4マルチスレッド
xml.etree.ElementTree.fromstring()
で関数が呼び出されると、無限のブロックがありQThread
ます。また、他の多くの呼び出しにより、QThreadがのようにブロックされmultiprocessing.Process()
ます。それは純粋なブロックであり、例外や中断はないと言うことが重要です。
コードは次のとおりです(少し編集されていますが、ソースと同じ原則です)。
qt - QThreadは、使用する前に実行/終了することはありませんか?
EncodeThreadというカスタムQObjectクラスを作成しました。これは次のようになります。
明らかなように、このクラスは外部ライブラリを使用してビデオをエンコードするために使用されます。Encode()には実際のエンコーディングルーチンが含まれています。run()はトラブルシューティング中に追加した関数ですが、明らかに機能していません。
問題は、EncodeThreadインスタンスでQThreadとmoveToThread()関数を使用する場合、つまり何も起こらないように見えることです。データは書き込まれず、インスタンスは、エンコードされたファイルをディスクに保存する必要があるシグナルを発行しません。
上記は、セットアップ全体が開始される方法です。EncThread変数とthread変数は、MainWindowクラスで宣言されています。シグナルを使用してメインスレッドからencode()を呼び出そうとした後、EncodeThreadのset()関数でencode()を呼び出しましたが、QMetaObjectが失敗しました。
私はスレッド化に不慣れではなく、ネイティブのWindowsスレッドとLinuxスレッド、およびさまざまなクロスプラットフォーム実装のスレッドを使用しましたが、QThreadsは本当に私を困惑させているようです。どんな提案も大歓迎です:)
qt - qt signal/slot と pthread がうまく連携しない
ASYNC_TIMERS が定義されているときに、この qt コードが Callback を呼び出さない理由を教えてください (つまり、m_timer.start は pthread から呼び出されますが、スロットは実行されません)。明らかに、ASYNC_TIMERS が定義されていないときに機能するため、pthread から呼び出されることに関係していますが、pthread から修正する方法を知りたいです。moveToThread()、exec()を呼び出すスレッド実行の呼び出しなど、ネットで見つけた多くのことを試しましたが、この問題はうまくいきませんでしたか?
乾杯
multitimer.h:
タイマー.cpp:
python - 各スレッドの進行状況を知る方法は?
Pythonの新機能で、マルチスレッドを使用してアップロードプログラムを作成しました。問題は、各スレッドの進行状況を表示する進行状況バーが1つしかないことです。pythonpyqt4QThreadを使用しています。各アップロードスレッドの進行状況を知る方法はありますか?ここにコードのいくつかの部分があります。
次に、handleDownload()はプログレスバーにシグナルを送信して、その値を更新します。
どうも
c++ - QWaitCondition で永久に実行される QThread を実装する方法{}が、実行中に別のスロットをキャッチする必要がある
QQueue を介してシリアル ポートにデータを書き込み、スロットから読み取ることができるクラスを実装しました。これには QAsyncSerial を使用します。これは、boost::asio とコールバックを使用します。クラスはスレッドに移動され、QThread が「started()」を発行すると、その start() メソッドが実行されます。
問題は、forever {} と QWaitCondition を使用して start() メソッドで QQueue をデキューすることです。これが実行されている間 (明らかに永久に実行されます)、QAsyncSerial の dataReceived 信号に接続されたスロットを呼び出すことができないため、シリアル ポートから何も読み取れません。
この問題に対する通常のアプローチは何ですか?
boost::asio で使用される変更された QAsyncSerial コールバック:
編集:
この問題を別のアプローチで解決しました。私は QAsyncSerial を捨て、代わりに QAsyncSerial によって直接配布されている CallbackAsyncSerial を使用しました。現在、boost::asio が使用するコールバックは serialSlotReceivedData の「スロット」です。これにより、boost :: asio が実行されるスレッドでコールバックが呼び出されるため、問題が「解決」されます。独自のスレッドがあるため、SerialPortHandler が実行されるスレッドが永久ループによってブロックされても問題ありません。
新しいコード: (QAsyncSerial は CallbackAsyncSerial のラッパーのようなものであるため、変更されたのは些細なことだけです)