qt類 可重入

2021-07-05 22:13:33 字數 756 閱讀 8089

如果類的不同例項,可以同時用於不同的執行緒中,那麼這個類就是可重入的。

比如乙個類classa,它的兩個例項,a_1 和 a_2。

a_1在主線程中使用,a_2在子執行緒中使用。這兩個例項可以在兩個執行緒中同時被使用。那麼就說類classa是可重入的。

qt中的大部分 非介面類 都是可重入的。  也就是說,這些類的不同例項,可以在不同的執行緒中被使用。

然而,多個執行緒,同時訪問乙個可重入類的乙個例項,是不安全的。

比如,主線程和子執行緒同時訪問 a_1。

這是不安全的。

必須要加鎖才行。

比如qthread類。這個類就是可重入的。

但是在downloadthread類中,對成員變數bool m_bstop的訪問是必須要加鎖的。

因為主線程會呼叫setvalue()方法,修改m_bstop。而downloadthread例項中,也會讀取m_bstop的值。會有主線程和子執行緒同時使用m_bstop的情況。

所以,必須加鎖。

可重入的門檻很低,大部分 非影象介面類 都是可重入的。

因為,在主線程中使用a_1,在子執行緒中使用a_2。a_1和a_2 是不同的記憶體位址。除非類classa中有共享資料,靜態成員變數。否則一般的類,都是可重入的。

qt中,所有的 影象介面類,都是不可重入的。qwidget及其子類,都是不可重入的。

即,不能夠在子執行緒中,使用qt的圖形介面類。

如果想在子執行緒中,修改某個qlabel的文字,那麼只能向主線程發射訊號,讓主線程修改qlabel的文字。

Qt 可重入和執行緒安全

在整個文件中,術語 可重入 和 執行緒安全 用於標記類和函式,以指示它們如何在多執行緒應用程式中使用 因此,執行緒安全函式始終是可重入的,但可重入函式並非始終是執行緒安全的。通過擴充套件,如果可以從多個執行緒安全地呼叫其成員函式,則該類稱為可重入的,只要每個執行緒使用該類的不同例項即可。如果可以從多...

可重入函式 可重入核心

可重入函式這一概念早有接觸,但一直未有系統的理解,最近閱讀 apue 訊號一章時,其中講解很到位,故總結如下。訊號作為一種軟中斷,能夠被程序給捕獲,因而也就中斷程序的正常執行,轉而去執行訊號處理程式,最後再返回到原程序繼續正常執行。然而,當程序正在執行 malloc 動態記憶體分配時,訊號產生從而轉...

可重入核心 可重入函式

可重入核心在ulk 深入理解linux核心 中的定義是指若干個程序可以同時在核心態下執行,也就是說多個程序可以在核心態下併發執行核心 在單處理器上,只能實現 微觀上的序列,巨集觀上的並行,即任意時刻,只有乙個進 正執行,其他程序處於阻塞或者等待狀態。這裡的可重入,是指可以多個程序進入核心,並不是重複...