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多次),若線程正在執行,則直接返回,不執行線程了。