可重入函數也就是異步信號安全函數,一般是除了使用自己棧上的變量以外不依賴於任何環境的purecode(純代碼)
(使用鎖是無法解決可重入問題的,因為當出現信號中斷的,中斷函數裡再次調用此函數就會出現死鎖!)
而線程安全函數,如果使用了靜態數據或者全局數據的話,可以用鎖來將其變為線程安全的。(但無論怎麼樣都無法變為可重入函數(或稱異步信號安全函數))
可重入函數一定是線程安全函數。反之,則不正確。
linux/unix中的異步信號函數(可用在中斷函數中的函數)
摘自《UNPv2》
linux/unix中的線程安全函數
除個別函數外,posix和ANSI C標准定義的所有都是線程安全的
個別函數如下:
摘自《UNPv1》
函數加上後綴_r的一般是非標准的線程安全函數.