Qt中的多线程-疑问与问题
几乎搜索了几个小时后,我对多线程的概念变得更加困惑,我需要帮助理解和实现它。在搜索之后,我得到了以下实现 main.cpp 现在我的问题是Qt中的多线程-疑问与问题,qt,qt4,Qt,Qt4,几乎搜索了几个小时后,我对多线程的概念变得更加困惑,我需要帮助理解和实现它。在搜索之后,我得到了以下实现 main.cpp 现在我的问题是 我只定义了一个函数run(),当线程初始化时,编译器如何确定它必须执行run()函数,以及当它有多个函数时它会做什么,我得到了这个问题,因为在main.cpp中我刚刚键入了abc.start();并且没有指定要执行什么 在mythread1.h和run函数中,我使用while(0首先:run方法应该受到保护 其次,你所说的“我只定义了一个函数run()”是什
abc.start()
意味着mythread的abc实例将启动并使用它的入口点方法void run()
。你不能用相同的签名声明多个方法。如果你想知道它如何调用你的run())
而不是QThread::run()
那么您需要阅读一些关于C语言中虚拟方法的内容++
广告3:我们如何知道你的文件为什么没有复制?检查QFile提供给你的错误。更改你的代码如下:
QFile f("pathtomytargetfile");
if( ! f.copy("targetpath") )
{
qDebug() << f.errorString();
}
QFile f(“pathtomytargetfile”);
如果(!f.copy(“targetpath”))
{
qDebug()我的回答可能会让你更加困惑,但我认为以下链接值得一读:
是介绍QThread
类的工程师的一篇文章。他为建议继承QThread
而道歉
这篇文章向您展示了应该如何做到这一点(严格地说——从QThread
继承也会起作用,只是在设计方面没有这么好)
您可以找到Qt提供的多线程技术的概述,以及一些帮助,以确定应该使用哪种技术解决特定问题
HTHabc.wait()
-您要等到abc
完成后才能继续。当然,它会干扰主线程!那么我如何使它同时运行?我应该删除该行吗?然后它将在后台运行而不会干扰主线程?我在某个地方读到,我必须放置该行,以便在退出主线程之前关闭线程应用程序?您能澄清一下吗,我是QT新手在a.exec()
返回后,您可以abc.quit()
或abc.exit(0)
-听起来你真的需要开始学习了。我可以为我剩下的问题找到解释吗?这里有一组很棒的教程,让你开始学习Qt线程:如果你还在学习Qt的基础知识,我会把它们全部讲解一遍。
#ifndef MYTHREAD1_H
#define MYTHREAD1_H
#include <QtGui>
#include <windows.h>
class mythread : public QThread
{
public:
void run();
};
void mythread::run()
{
}
#endif // MYTHREAD_H
QFile f("pathtomytargetfile");
if( ! f.copy("targetpath") )
{
qDebug() << f.errorString();
}