Git本地庫既關聯GitHub又關聯Gitee
阿新 • • 發佈:2020-08-10
1、qt4.7以前版本處理方式,多執行緒的使用
1、自定義一個類,繼承於QThread,
class MyThread : public QThread { public: void run(); // 多工執行函式 signals: void isDone(); // 處理完成後需要傳送訊號需要知道,執行緒處理完成任務 } void run() // 函式實現 { // 處理複雜任務 // 傳送訊號 任務處理完成 emit isDone(); }
2、使用的地方需要建立一個類物件
MyThread thread;// 在需要多工的地方啟動執行緒 // 不可以直接掉用run() // start() 間接呼叫run() thread.start(); // 啟動執行緒
3、執行緒使用
1、建立一個類繼承QThread
#include <QThread> class myThread : public QThread { protected: void run(); // 重寫虛擬函式 執行緒的入口函式 signals: void isDone(); // 發訊號 說明執行緒結束了 };
2、實現run()函式
void myThread::run() { qDebug()<< ";正在睡覺"; sleep(5); // 任務處理程式碼 emit isDone(); // 傳送訊號 說明該執行緒結束了 }
3、執行緒啟動,轉去執行run()
void Widget::on_buttonStart_clicked() { if(myTimer->isActive() == false) { myTimer->start(100); } // 需要多執行緒的地方 啟動執行緒 thread->start(); // 啟動執行緒 }
4、等待run()發出執行緒結束訊號,並處理訊號
thread = new myThread(this); // 處理執行緒結束訊號標誌 connect(thread,&myThread::isDone,this,&Widget::dealPmythread);
5、執行緒結束處理
void Widget::dealPmythread() { qDebug() << "deal over"; myTimer->stop(); // 執行緒結束了 進一步處理 }
6、釋放執行緒資源
// 視窗右上角X 關閉時,發出訊號處理, 釋放執行緒資源 connect(this,&Widget::destroyed,this,&Widget::closeThread);
7、釋放執行緒 函式實現
void Widget::closeThread() { thread->quit(); // 關閉執行緒 thread->wait(); // 等待執行緒處理完資源 }