1. 程式人生 > >Qt 筆記:另一種建立執行緒的方式

Qt 筆記:另一種建立執行緒的方式

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應該作為執行緒操作集合而使用

可以通過訊號與槽的機制靈活指定執行緒入口函式

另一個種建立執行緒的方式