Qt5.9实现简单的多线程实例(类QThread)
Qt开启多线程,主要用到类QThread。有两种方法,第一种用一个类继承QThread,然后重新改写虚函数run()。当要开启新线程时,只需要实例该类,然后调用函数start(),就可以开启一条多线程。第二种方法是继承一个QObject类,然后利用moveToThread()函数开启一个线程槽函数,将要花费大量时间计算的代码放入该线程槽函数中。第二种方法可以参考我写的另一篇博客:https://www.dedeyun.com/article/223796.htm
下面我总结的主要是第一种方法。(注意:只有在run()函数里面才是新的线程,所有复杂逻辑都应该在run()函数里面做。当run()函数运行完毕后,该线程生命周期结束。)
创建多线程步骤如下:
a1新建一个类MyThread,基类为QThread。
a2重写类MyThread的虚函数void run();,即新建一个函数protected void run(),然后对其进行定义。
a3在需要用到多线程的地方,实例MyThread,然后调用函数MyThread::start()后,则开启一条线程,自动运行函数run()。
a4当停止线程时,调用MyThread::wait()函数,等待线程结束,并且回收线程资源。
1.1新建一个widget工程,不要勾选ui界面。然后分别在mythread.h,mythread.cpp,widget.h,widget.cpp,main.cpp分别添加如下代码。
mythread.h
mythread.cpp
widget.h
widget.cpp
main.cpp
1.2程序构建和运行后,结果如下图所示:
参考内容:
https://blog.csdn.net/czyt1988/article/details/64441443(正确终止线程经典教程)
https://blog.csdn.net/MyCodingLine/article/details/48597935
https://blog.csdn.net/xipiaoyouzi/article/details/8450704
https://blog.csdn.net/qq769651718/article/details/79357933(两种创建多线程方式)
https://blog.csdn.net/czyt1988/article/details/71194457
到此这篇关于Qt5.9实现简单的多线程实例(类QThread)的文章就介绍到这了,更多相关Qt5.9 多线程内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!