乙個可重入函式簡單來說是可以被中斷的函式,也就是說,可以在這個函式執行的任何時候中斷它,轉入os排程下去執行另一段**,而返回控制時不會出現什麼錯誤。
可以被訊號控制器安全呼叫的函式稱為「非同步訊號安全函式」。可重入函式與非同步訊號安全函式時乙個概念。
執行緒安全:
乙個函式被稱為執行緒安全的,當且僅當被多個併發執行緒反覆呼叫時,他會產生乙個正確的結果。
可重入性:
有一類重要的執行緒安全函式,叫做可重入函式,其特點在於他們具有一種屬性:當他們被多個執行緒呼叫時,不會引用任何共享的資料。儘管執行緒安全和可重入有時會被用作同義詞,但他們之間是有差別的,可重入函式是執行緒安全函式的乙個真子集。
不可重入函式的原因在於:
1.已知它們使用靜態資料結構;
2.它們呼叫malloc和free;因為malloc通常會為所分配的儲存區維護乙個鏈結表,而插入執行訊號處理函式的時候,程序可能正在修改此鏈結表。
3.它們是標準io函式;因為標準io庫很多實現都使用了全域性資料結構。
Linux 執行緒安全和可重入函式
執行緒安全 乙個函式被稱為執行緒安全的 thread safe 當且僅當被多個併發程序反覆呼叫時,它會一直產生正確的結果。如果乙個函式不是執行緒安全的,我們就說它是執行緒不安全的 thread unsafe 我們定義四類 有相交的 執行緒不安全函式。將這類執行緒不安全函式變為執行緒安全的,相對比較容...
Linux中的執行緒安全和可重入函式
一 執行緒安全 執行緒安全 就是多執行緒訪問時,採用了加鎖機制,當乙個執行緒訪問該類的某個資料時,進行保護,其他執行緒不能進行訪問直到該執行緒讀取完,其他執行緒才可使用。不會出現資料不一致或者資料汙染。線程不安全 就是不提供資料訪問保護,有可能出現多個執行緒先後更改資料造成所得到的資料是髒資料。例如...
Linux 多執行緒可重入函式
在單執行緒程式中,整個程式都是順序執行的,乙個函式在同一時刻只能被乙個函式呼叫,但在多執行緒中,由於併發性,乙個函式可能同時被多個函式呼叫,此時這個函式就成了臨界資源,很容易造成呼叫函式處理結果的相互影響,如果乙個函式在多執行緒併發的環境中每次被呼叫產生的結果是不確定的,我們就說這個函式是 不可重入...