可重入與執行緒安全

2021-09-06 15:34:40 字數 310 閱讀 5849

乙個執行緒安全的函式可以同時被多個執行緒呼叫,即便是這些呼叫使用了共享資料。因為該共享資料的所有例項都被序列化了。

乙個可重入的函式也可以同時被多個執行緒呼叫,但是只能是在每個呼叫使用自己的資料時。

因此,乙個執行緒安全的函式總是可重入的,但是乙個可重入的函式不總是執行緒安全的。

推而廣之,如果只要每個執行緒使用乙個類的不同例項,該類的成員函式就可以被多個執行緒安全地呼叫,那麼這個類被稱為可重入的;如果即使所有的執行緒使用乙個類的相同例項,該類的成員函式也可以被多個執行緒安全呼叫,那麼這個類被稱為執行緒安全的。

可重入與執行緒安全

之前一直糾結可重入與執行緒安全的區別,今天詳細查了一下。其實根據兩個概念的名字就可以得出結論,可重入就是重複多次結果都是一樣的,而執行緒安全則不一樣,只要不同執行緒執行的時候不會出現因不同執行緒執行順序不同而結果不同就可以。大多數情況下,要將不可重入函式改為可重入的,需要修改函式介面,使得所有的資料...

執行緒安全與可重入

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

可重入與執行緒安全

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