首页 > 编程知识 正文

python实现多线程有几种方式(qt多线程实例)

时间:2023-05-06 11:06:09 阅读:75725 作者:2873

Qt多线程的几种实现方法

在Qt中经常会遇到耗时的操作,需要同时执行,但在这种情况下使用多线程。 Qt多线程有多种实现方式,这里介绍三种方式。

类实现形式在类中实现多线程是最传统的实现形式,思想是编写继承QThread的类,并在run ()中打开线程。

代码示例:

. h文件

# includeqthreadclassxthread : publicqthread { q _ object public : explicitxthread (q object * parent=nullptr ); void run (; //任务处理线程~xthread () }; cpp文件

x thread :3360 x thread (q object * parent voidxthread :3360 run ) ) /等待运行程序)可以在最后需要调用线程的位置打开

main.cpp

# includexthread.hx thread * ht=null ptr; xt=new xthread; xt - start (; //线程销毁,释放内存delete xt; xt=nullptr; 移动到线程移动到线程是Qt5的新功能,也是官方推荐的方法。 推荐与计时器相结合的实现方法。 写法非常简洁高效。

. cpp文件

x_thread=new QThread; x_timer=new QTimer; func ) )中实现函数主体connect(x_timer,signal ) timeout )、this,slot )、Qt:DirectConnection )//计时器的自动销毁连接(x _ thread,signal(finished ),x_timer,slot ) deletelater ) ); x_timer-start(500; x _ timer -移动到thread (x _ thread; x_thread-start (; h文件

# includeqtimer # includeqthreadqtimer * x _ timer=nullptr; QThread *x_thread=nullptr; ~destructor () if ) x_thread ) ) { x_thread-quit ); x_thread-wait (; delete x_thread; x_thread=nullptr; 使用QtConcurrent QtConcurrent,严格来说,它应该是异步操作,而不是多线程操作,但实际上它调用线程池进行与多线程非常相似的实现。 那个实现代码非常简单。

# includeqtconcurrent/qtconcurrentqtconcurrent :3360 run ([=] ) { func ); //需要时间的操作直接写在这里; 异步的详细说明是我之前的博客,在这里贴上链接,不做说明:

Qt简单异步操作的实现方法

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。