ほとんど何時間も検索して、マルチスレッドの概念についてさらに混乱し、それを理解して実装するのに助けが必要になりました。検索した後、次の実装にたどり着きました
main.cpp
#include <QtGui/QApplication>
#include "mainwindow.h"
#include <mythread1.h>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
mythread abc;
abc.start();
abc.wait();
return a.exec();
}
上記のコードmythread.h
はマルチスレッド用に作成したヘッダー ファイルで、以下は mythread1.h のコードです。
mythread1.h
#ifndef MYTHREAD1_H
#define MYTHREAD1_H
#include <QtGui>
#include <windows.h>
class mythread : public QThread
{
public:
void run();
};
void mythread::run()
{
}
#endif // MYTHREAD_H
今私の質問は
- 関数 run() を 1 つだけ定義しました。スレッドが初期化されたときに、コンパイラが run() 関数を実行する必要があると判断する方法と、複数の関数がある場合の動作について、main.cpp で abc と入力しただけなので、この質問を受けました。始める(); 何を実行するかを指定していませんか?
- mythread1.h 内と run 関数で、while(0<1) を使用して無限ループを作成し、プログラムを実行しました。驚いたことに、CPU 使用率が 100% の白い画面が表示されましたが (驚くことではありません)、実行する必要があります。メインスレッドに干渉することなく同時に?では、なぜこれが起こっているのですか?
- 次に
QFile::copy("pathtomytargetfile","targetpath");
、mythread1.cpp 内の run 関数内で使用しましたが、機能しませんでした :O そのファイルをコピーしませんでしたが、メイン スレッドのプッシュ ボタンで接続すると正常にコピーされました。なぜこれが起こったのですか? - マルチスレッドを実装する簡単な方法を知っている人はいますか?
ありがとうございました