QT事件循环与QThread类的关闭quit(),wait()


1. 关于为什么关闭线程,释放资源的时候要先quit(),然后wait()

quit()函数是用来停止QThread的,但是由于Qt本身是事件循环机制,所以在调用完quit()后,QThread可能还没有完全停止,此时如果执行delete channel,程序就会报错。在执行quit()后,调用wait()来等待QThread子线程的结束(即从run()函数的返回),这样就能保证在清除QThread时,其子线程是停止运行的。

2. 事件循环机制

看到上面有一句话,“Qt本身是事件循环机制”,大家可能不理解什么是事件循环机制,大家可以看看这篇文章 https://zhuanlan.zhihu.com/p/72758194
我理解的是,调用quit()之后,将线程停止了,但是如果用户再次触发这个线程的启动,那么会导致你delete 了一个正在运行的线程,因此需要wait()来等待QThread子线程的结束


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM