可重入與執行緒安全

2021-06-18 12:48:23 字數 358 閱讀 1292

之前一直糾結可重入與執行緒安全的區別,今天詳細查了一下。

其實根據兩個概念的名字就可以得出結論,可重入就是重複多次結果都是一樣的,而執行緒安全則不一樣,只要不同執行緒執行的時候不會出現因不同執行緒執行順序不同而結果不同就可以。大多數情況下,要將不可重入函式改為可重入的,需要修改函式介面,使得所有的資料都通過函式的呼叫者提供,所有的變數都是區域性變數。 要將非執行緒安全的函式改為執行緒安全的,則只需要修改函式的實現部分。一般通過加入同步機制以保護共享的資源,使之不會被幾個程序同時訪問。 因此,相對執行緒安全來說,可重入性是更基本的特性,它可以保證執行緒安全:即,所有的可重入函式都是執行緒安全的,但並非所有的執行緒安全函式都是可重入的。

可重入性是

函式程式語言的關鍵特性之一。

執行緒安全與可重入

1 什麼是執行緒安全 當乙個函式被多個執行緒反覆呼叫的時候,他會一直產生正確的結果,那麼這個函式就是執行緒安全的。執行緒安全函式解決了多個執行緒呼叫函式時訪問臨界資源的衝突問題。2 可重入 在多執行緒或有異常控制流的情況下,當某個函式執行到中途時,控制流有可能被打斷去執行另乙個函式,而這 另乙個函式...

可重入與執行緒安全

概念 可重入性class counter void increment void decrement intvalue const private int n counter類是可重入,但不是執行緒安全的。因為 和 操作符不是原子性的,它們通常要經歷以下三個步驟 暫存器讀取記憶體中變數的值 增加或減...

可重入與執行緒安全

乙個執行緒安全的函式可以同時被多個執行緒呼叫,即便是這些呼叫使用了共享資料。因為該共享資料的所有例項都被序列化了。乙個可重入的函式也可以同時被多個執行緒呼叫,但是只能是在每個呼叫使用自己的資料時。因此,乙個執行緒安全的函式總是可重入的,但是乙個可重入的函式不總是執行緒安全的。推而廣之,如果只要每個執...