執行緒安全與可重入函式

2021-08-03 07:31:39 字數 649 閱讀 8110

執行緒安全

就是多執行緒訪問時,採用了加鎖機制,當乙個執行緒訪問該類的某個資料時,進行保護,其他執行緒不能進行訪問直到該執行緒讀取完,其他執行緒才可使用。不會出現資料不一致或者資料汙染。 執行緒不安全就是不提供資料訪問保護,有可能出現多個執行緒先後更改資料造成所得到的資料是髒資料;

如果你的**所在的程序中有多個執行緒在同時執行,而這些執行緒可能會同時執行這段**。如果每次執行結果和單執行緒執行的結果是一樣的,而且其他的變數的值也和預期的是一樣的,就是執行緒安全的;

執行緒安全問題都是由全域性變數及靜態變數引起的;

所以在修改全域性變數或者靜態變數時,我們可以對其進行加鎖,實現同步與互斥來保證其執行緒安全;

可重入函式

所謂可重入函式是指乙個可以被多個任務呼叫的函式(過程),任務在呼叫時不必擔心資料是否會出錯。不可重入函式在實時系統設計中被視為不安全函式。

而其不用擔心資料出錯時因為它除了使用自己棧上的變數以外不依賴於任何環境(包括static);以允許有多個該函式的副本在執行,由於它們使用的是分離的棧,所以不會互相干擾;如果非要使用全域性變數或者static便要保證其互斥;

所以 1、乙個函式對於多個執行緒是可重入的,則這個函式是執行緒安全的。

2、乙個函式是執行緒安全的,但並不一定是可重入的。【使用互斥鎖實現的執行緒安全】

3、可重入性要強於執行緒安全性。

執行緒安全與可重入函式

可重入函式 reentrant function 與執行緒安全函式 thread safe function 有時容易混淆,而且各種文件中的解釋也不是很清楚,這裡根據筆者的經驗來說明一下。執行緒安全函式 概念 執行緒安全的概念比較直觀。一般說來,乙個函式被稱為執行緒安全的,當且僅當被多個併發執行緒反...

可重入函式與執行緒安全

執行緒安全 乙個函式被稱為執行緒安全的 thread safe 當且僅當被多個併發程序反覆呼叫時,它會一直產生正確的結果。如果乙個函式不是執行緒安全的,我們就說它是執行緒不安全的 thread unsafe 我們定義四類 有相交的 執行緒不安全函式。將這類執行緒不安全函式變為執行緒安全的,相對比較容...

可重入函式與執行緒安全

可重入函式與執行緒安全 執行緒安全 假如在乙個函式中它是這麼寫的,在乙個全域性鍊錶上存放資料,在單執行緒模式下,我們先new乙個新的節點然後讓head next指向這個節點,這種場景在多執行緒場景下會是這樣的過程,執行緒一new了乙個節點,然後cpu轉去執行執行緒二,執行緒二new乙個節點後head...