使用QtConCurrent并发模块的run()函数方式实现多线程

使用QtConCurrent并发模块的run()函数方式实现多线程

QtConcurrent::run的使用,就是把要在子线程运行的函数和参数传入到run中就行了

如下图代码,定义一个函数,在按钮槽函数里把它放进this的线程池中取出来的一个线程中去运行。

使用QtConCurrent并发模块的run()函数方式实现多线程_第1张图片

 

结果如下图所示,主线程开始执行,主线程执行完毕,子线程开始执行,子线程执行完毕,若是不把函数放进线程,那么主线程执行完毕应该最后输出

使用QtConCurrent并发模块的run()函数方式实现多线程_第2张图片

 根据槽函数中代码,我想要的结果是,主线程开始执行,子线程开始执行,主线程执行完毕,猜测原因应该是将函数放进线程中跑这个操作消耗了一定的时间,

于是加了一行代码,让主线程在输出“主线程执行完毕之前等待一毫秒”,得到想要的结果。

使用QtConCurrent并发模块的run()函数方式实现多线程_第3张图片

 

我写的函数没有参数,给函数传递参数的方法是,在run函数参数列表后面加上想要传进函数的参数,不过这个参数数目有限制,最大只能传五个

使用QtConCurrent并发模块的run()函数方式实现多线程_第4张图片 

 

你可能感兴趣的:(qt)