QT中建立執行緒的幾種方式

2021-09-29 03:54:19 字數 887 閱讀 1454

0x01 使用qrunable來處理耗時的操作

繼承qrunable 的類需要重寫其基類的run()方法,常與執行緒池qthreadpool類一起使用。qthreadpool用於管理qrunable,使用qthreadpool 中的start()方法將qrunable子類置於執行緒池中管理。

0x02 採用concurrent模組中的高階介面

concurrent模組中的qfuturethread = qtconcurrent::run(funtion,parmsone,parmstwo)方法來開啟乙個執行緒,其中function 為要呼叫的函式的名稱,parmsone,parmstwo為要呼叫的函式的引數列表,一旦執行緒啟動後,再次修改其引數對於執行緒內部資料的更改是無效的;採用此方法啟動的執行緒thread ,無法控制其暫停、取消和進度顯示,僅能通過thread 查詢其執行緒的執行或完成狀態。

0x03 使用core模組中的介面

core模組中的qthread類也能實現開啟乙個子執行緒,其用法和qrunable類似都需要子類繼承其父類並實現run()方法,不同的是qthread類提供了更為複雜的控制,不需要執行緒池統一管理就可以完成相關的操作。繼承自qthread類的子類只有其run方法中的物件或資料執行在新的子執行緒中,其它成員仍然是執行在建立qthread子類的執行緒中。

0x04 採用qobject中的movetothread方法

對於繼承自qobject的子類可以採用movetothread 方法,將其子類的一些成員函式移到新的子執行緒中去執行:myobject->movetothread(qthread *targetthread);此方法只能將乙個物件「推到」另乙個執行緒,而不能將乙個物件從其它執行緒「拉到」當前執行緒。

建立執行緒的幾種方式

thread,runnable,callable runnable和callable的區別是,1 callable規定的方法是call runnable規定的方法是run 2 callable的任務執行後可返回值,而runnable的任務是不能返回值得 3 call方法可以丟擲異常,run方法不可以...

建立執行緒的幾種方式

class a int operator int n void foo int x int main 6 lambda表示式 thread t7 a f,a,8,w 傳遞a的拷貝的成員函式給子執行緒 thread t8 a f,a,8,w 傳遞a的位址的成員函式給子執行緒 futurefu asyn...

建立執行緒的幾種方式

建立執行緒有四種方式 1.繼承thread類 public class mythread00 extends thread public static void main string args 2.實現runnable介面 public class mythread01 implements ru...