可重入 執行緒安全

2021-05-22 08:43:51 字數 302 閱讀 8394

可重入:乙個函式可以同時被呼叫,不會有影響

執行緒安全:乙個函式可以被多執行緒同時呼叫,不會有影響.

可重入》執行緒安全,需要比執行緒安全更強的條件.

乙個函式是可重入的,一定是執行緒安全的

乙個函式是執行緒安全的,不一定是可重入的

比如:malloc不是非同步-訊號安全,但是執行緒安全的,因此其不是可重入的

malloc是執行緒安全的,是因為它加了執行緒鎖保護了其中的臨界區,但是它不是可重入的,因為裡面有靜態變數,如果同時被進入,那麼就會發生錯亂.

大致上,乙個函式如果使用了靜態變數,那麼就是不可重入的.

執行緒安全 可重入

昨天有人問可重入和執行緒安全,實際是混在一起淘漿糊了 這2個是完全不同的概念 可重入函式只有在signal下會發生,比如乙個函式在執行時被中斷,在中斷處理函式中又一次被呼叫,這2次 每次 呼叫都能產生正確的結果,那就個可重入函式 看乙個不可重入的例子 void sig handler int sig...

訊號可重入執行緒安全

訊號可重入執行緒安全 2009 08 28 16 54 之所以把這幾個概念放一起,是因為它們組合在一起容易出現一些莫名其妙的錯誤,而且一旦出現,還很難被發現。更糟糕的是它們的出現需要一定的時間,並不是非常容易重現的,而且需要了解的比較多才能更好的理解它們發生的原因。這裡要用例子闡述一下。訊號的是un...

可重入與執行緒安全

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