線程安全:一個函數被稱為線程安全的,當且僅當被多個并發進程反復調用時,它會一直產生正確的結果。如果一個函數不是線程安全的,我們就說它是線程不安全的。
重入:函數被不同的控制流程調用,有可能在第一次調用還沒返回時就再次進入該函數;
不可重入函數:函數訪問一個全局鏈表,有可能因為重入而造成錯亂;
可重入函數:如果一個函數只訪問自己的局部變量或參數;
可重入函數避免了因訪問其他的函數而造成的線程不安全問題。可重入函數為線程安全的函數。
像全局鏈表一樣,可能因為線程的問題同時頭插倆個節點而導致的插入錯誤,這就造成線程的不安全,因為其操作不是原子操作,進而導致同一時刻發生不同的動作。
![]()
像上述的例子,就有可能發生因為重入而導致的錯亂,這樣的就稱為不可重入函數。