最近,我問了一個問題,標題為“ malloc線程安全嗎?” ,然后我問:“ malloc是否可重入?”我的印象是所有重入者都是線程安全的。這個假設錯了嗎?
3 回答

楊__羊羊
TA貢獻1943條經驗 獲得超7個贊
這取決于定義。例如,Qt使用以下內容:
即使調用使用共享數據,也可以從多個線程同時調用線程安全*函數,因為對共享數據的所有引用都已序列化。
一個可重入函數也可以從多個線程同時調用,但只有當每個調用使用自己的數據。
因此,線程安全函數始終是可重入的,但是重入函數并不總是線程安全的。
通過擴展,如果可以從多個線程安全地調用其成員函數,則該類稱為可重入的,只要每個線程使用該類的不同實例即可。如果可以從多個線程安全地調用其成員函數,則該類是線程安全的,即使所有線程都使用該類的相同實例也是如此。
但他們也警告:
注意:多線程域中的術語尚未完全標準化。POSIX使用可重入和線程安全的定義,這些定義對其C API有所不同。當將其他面向對象的C ++類庫與Qt一起使用時,請確保理解定義。
添加回答
舉報
0/150
提交
取消