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子線程的結束
