几乎搜索了几个小时,我对多线程概念变得更加困惑,我需要帮助来理解和实现它。经过搜索,我来到了以下实现
主文件
#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(),当线程被初始化时,编译器如何确定它必须执行run() 函数以及当它有多个函数时它会做什么,我得到了这个问题,因为在main.cpp 中我只是输入了abc。开始(); 并没有指定要执行什么?
- 在 mythread1.h 和运行函数中,我使用 while(0<1) 创建了一个无限循环并运行了程序,令我惊讶的是,我刚刚看到白屏,CPU 使用率为 100%(不足为奇),但它应该运行同时不干扰主线程对吗?那么为什么会这样呢?
- 然后我
QFile::copy("pathtomytargetfile","targetpath");
在 mythread1.cpp 中的 run 函数内部使用,但这不起作用:O 并且它没有复制该文件,但是当我将它与主线程中的 Push 按钮连接时,它被成功复制,为什么会这样? - 有谁知道实现多线程的更简单方法?
谢谢