使用qt建立執行緒有兩種方式,方式a使用movetothread,方式b是直接繼承qthread。差異主要在於方式a的槽函式將會在新執行緒中執行,而方式b的槽函式在舊執行緒中執行。
結論如下:
ps:舊執行緒在這裡指主線程,而新執行緒指qthread建立出的執行緒。
相同點:
不同點:
綜上:使用方式b是需要注意,在不同的槽函式中操作成員變數時,實際上是在多個執行緒中進行操作,要檢查這樣做是否安全。除此之外使用兩者的效果是相同的。
下面用例項來說明一下兩者的差異。
Qt 執行緒建立的兩種方式
1.定義繼承qthread的類a 複寫run 函式 2.在主線程中例項化a物件a 3.通過呼叫a start 啟動執行緒,執行緒會自動呼叫run 虛函式 run不可直接呼叫 ifndef mythread h define mythread h include class mythread publ...
建立執行緒的兩種方式以及區別
1 繼承thread類 2.實現runnable介面 區別 採用繼承thread類 1 簡單,直接通過thread的構造方法建立執行緒,且訪問當前執行緒時,直接呼叫this.即可獲得當前執行緒。2 因為已經繼承thread類,所以不能繼承其他父類。3 若要兩個執行緒之間共享變數時,需要在宣告為sta...
建立執行緒的兩種方式及區別
1.建立執行緒的兩種方式及區別 採用繼承thread類方式 1 優點 編寫簡單,如果需要訪問當前執行緒,無需使用thread.currentthread 方法,直接使用this,即可獲得當前執行緒。2 缺點 因為執行緒類已經繼承了thread類,所以不能再繼承其他的父類。採用實現runnable介面...