QThread停止線程


 https://mp.weixin.qq.com/s/mOAyI02zk7eP1LZLUNUxgw

1 強制停止線程,停止使用run函數啟動的線程。

if (m_td != NULL)
{
  m_td->terminate();
  m_td->wait();  // 調用wait后先調用finished信號對應的槽函數,執行完成后再往下走
  delete m_td;
  m_td = NULL;
}

run函數執行完成后調用finished信號

 

2 安全停止線程,停止使用movetothread啟動的事件循環線程

if (m_td != NULL)
{
  m_td->quit();
  m_td->wait();  
  delete m_td;  
  m_td = NULL;
}

quit及wait后執行finished信號

 

run和moveToThread線程對比:

moveToThread(事件隊列)
1 發送消息多次消息(同一個線程),若線程正在執行,則放在事件隊列里。執行完成后循環獲取事件隊列中的消息執行。

run(無事件隊列)
1 發送消息多次(同一個線程start多次),若線程正在執行,則直接返回,不執行線程了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM