[Linux]线程安全和可重入函数
生活随笔
收集整理的這篇文章主要介紹了
[Linux]线程安全和可重入函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
線程安全:一個函數被稱為線程安全的,當且僅當被多個并發進程反復調用時,它會一直產生正確的結果。如果一個函數不是線程安全的,我們就說它是線程不安全的。
重入:函數被不同的控制流程調用,有可能在第一次調用還沒返回時就再次進入該函數;
不可重入函數:函數訪問一個全局鏈表,有可能因為重入而造成錯亂;
可重入函數:如果一個函數只訪問自己的局部變量或參數;
可重入函數避免了因訪問其他的函數而造成的線程不安全問題。可重入函數為線程安全的函數。
像全局鏈表一樣,可能因為線程的問題同時頭插倆個節點而導致的插入錯誤,這就造成線程的不安全,因為其操作不是原子操作,進而導致同一時刻發生不同的動作。
像上述的例子,就有可能發生因為重入而導致的錯亂,這樣的就稱為不可重入函數。
我們知道,重入函數是線程安全函數。如果一個函數對多個線程來說時可重入的,就說這個函數時線程安全的。但這并不能說明對信號處理程序來說該函數也是可重入的。如果函數對異步信號處程序的重入是安全的,那么就說這個函數是異步信號安全的。
總的來說,可重入函數是線程安全函數,但是線程安全函數不一定是可重入函數。
用幅圖來表示一下吧~
總結
以上是生活随笔為你收集整理的[Linux]线程安全和可重入函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 想要孩子老是怀不上
- 下一篇: [Linux]信号量