Qt中关于Qfuture线程销毁问题

Qt中关于Qfuture线程销毁问题

在这里我遇到一个由于子线程语句错误导致的程序中断问题,我的线程布置为:主线程中启动一个一级子线程,然后一级子线程中套用三个并行二级子线程(目前运行没有发现问题,因此我推测对于Qfuture来说,线程是可以套用的,网上实在查找不到这方面的知识),主线程需要等待一级子线程结束后再循环开启新的一级子线程,然后如此循环下去。一级子线程中出错导致主线程等待一个被销毁的线程,所以整个程序崩溃。

这是我整个问题的示意图
在这里插入图片描述
前面说了我的主线程需要等待一级子线程的结束,我第一次采取的方式为使用QfutureWatcher来监视线程,线程完成后再开启新的一级子线程(Qfuture结束后自动销毁),这里由于子线程遇到语句错误被强制销毁,导致watcher认为子线程是正常结束后自动销毁的,于是触发槽函数开启了新的一级子线程,导致整个程序时序混乱,进而程序崩溃掉。

我第二次采取的方式为使用waitforfinished来等待,又会出现线程在等待过程中被销毁的现象,这在Qt中同样是不允许的,也会导致程序崩溃。(但在此处得到了启发,因为网上很多少人说Qfuture线程是不可以主动被取消的,但是他却有cancel方法,这里设想的通过下述流程不就可以测试出用cancel到底是否可以主动强制销毁Qfuture了嘛)
在这里插入图片描述
问题的解决很简单(将语句错误修正即可),但调试过程中踩了很多坑,因为网上对于Qt的资料实在是少之又少,所以分享出来大家一起讨论,如有错误还请各位批评指正

本文原创,如有转载请注明出处。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值