Qt 筆記:另一種建立執行緒的方式
阿新 • • 發佈:2018-11-10
class QThread :public Qt
{
// .......
// .......
protected:
virtual void run() = 0;
// .......
// .......
};
ps:面向物件程式設計實踐的早起,工程中習慣於通過繼承的方式擴充套件系統的功能。
參考準則:
·儘量使用組合的方式實現系統功能
·程式碼中僅體現需求中的繼承關係
通過繼承的方式實現新的執行緒類,有什麼實際意義?
-通過繼承的方式實現多執行緒沒有任何實際意義
-QThread對應作業系統中的執行緒
-QThread用於充當一個執行緒操作的集合
-應該提供靈活的方式指定執行緒入口函式
-儘量避免重寫void run()
QThread類的改進
class QThread : public QObject
{
Q_OBJECT
// ......
protected:
virtual void run()
{
(void)exec();
}
// ......
}
如何靈活的指定一個執行緒物件的執行緒入口函式?
解決方案 - 訊號與槽
-在類中定義一個槽函式 void tmain() 作為執行緒入口函式
-在類中定義一個QThread成員物件m_thread
-改變當前物件的執行緒依附性到m_thread
-連線m_thread的start() 訊號到tmain()
總結:
-早期的Qt版本只能通過繼承的方式建立執行緒
-現在軟體技術提倡以組合的方式代替繼承
-QThread應該作為執行緒操作集合而使用
可以通過訊號與槽的機制靈活指定執行緒入口函式