Qt 多執行緒學習

2021-08-10 18:17:25 字數 1029 閱讀 7744

最開始作為入門我也想用比較普遍的方法:繼承qthread並且重寫 void run()函式。這個方法其實挺簡單的,就是自己寫乙個mythread類繼承qthread,比如說:

#ifndef mythread_h

#define mythread_h

#include #include class mythread : public qthread

;#endif // mythread_h

這樣的話,在.cpp檔案中就可以

void thread::run()

stopped = false;

}void thread::stop()

在run中可以呼叫該函式,在stop中就結束這個程序。

但是後來發現,如果是我自己的執行緒函式有引數,和返回值,run()函式就不行了,我不太清楚過載這個函式行不行,所以就試了另一種方法,這種方法對於帶引數和返回值的qt多執行緒是有效的:

比如說我在.h檔案中有乙個執行緒函式:  uint rtsptrans(int a);

那麼首先呼叫標頭檔案:

#include #include #include

然後呼叫的只需要用run函式呼叫函式與它的引數列表就行了。比如:

int integer=100;//函式的引數,這裡是舉乙個例子

qfuturefuture=qtconcurrent::run(this,&video::rtsptrans,integer);//呼叫函式,注意後面的引數

uint res = future.result();//獲得返回值

QT多執行緒的學習

qt通過三種形式提供了對執行緒的支援。它們分別是,一 平台無關的執行緒類,二 執行緒安全的事件投遞,三 跨執行緒的訊號 槽連線。這使得開發輕巧的多執行緒qt程式更為容易,並能充分利用多處理器機器的優勢。多執行緒程式設計也是乙個有用的模式,它用於解決執行較長時間的操作而不至於使用者介面失去響應。在qt...

qt 多執行緒

qt通過三種形式提供了對執行緒的支援。它們分別是,一 平台無關的執行緒類,二 執行緒安全的事件投遞,三 跨執行緒的訊號 槽連線。這使得開發輕巧的多執行緒qt程式更為容易,並能充分利用多處理器機器的優勢。多執行緒程式設計也是乙個有用的模式,它用於解決執行較長時間的操作而不至於使用者介面失去響應。在qt...

Qt 多執行緒

qt 包含下面一些執行緒相關的類 qthread 提供了開始乙個新執行緒的方法 qthreadstorage 提供逐執行緒資料儲存 qmutex 提供相互排斥的鎖,或互斥量 qmutexlocker 是乙個便利類,它可以自動對 qmutex 加鎖與解鎖 qreadwriterlock 提供了乙個可以...