QFuture.isFinished()为true,QFuture.waitForFinished()竟然报错
注意可能存在QFuture.isFinished()为true,QFuture.waitForFinished()报错的情况。
原因可能是QtConcurrent::run()的函数没有正确退出造成。
【具体过程如下】
QtConcurrent::run()执行了一个相机拉流的死循环,条件如下(相机是否在拉流)
当停止拉流,上述条件变为false
按理说死循环退出,函数就结束了。而且确定QFuture.isFinished()为true了,但是QFuture.waitForFinished()竟然报错。
也就是说,isFinished()不是真正的正确结束了???
最终定位到下述这行代码
在while外加锁后,QFuture.waitForFinished()不再报错。肯能因为m_ptrGrabResult有缓存和读写冲突。
【多余的话】
QFuture.waitForFinished()太容易报错了,有时候不崩溃,但是try catch可以捕获到。不写waitForFinished()就没事。
【参考】
QT高级线程API总结(四)QFuture_ONE米球兔的博客-CSDN博客_qfuture
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2019-09-22 2、持续监听客户端的信息