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

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