最近,我问了一个问题,标题为“ malloc线程安全吗?” ,然后我问:“ malloc是否可重入?”我的印象是所有重入者都是线程安全的。这个假设错了吗?
3 回答
杨__羊羊
TA贡献1943条经验 获得超7个赞
这取决于定义。例如,Qt使用以下内容:
即使调用使用共享数据,也可以从多个线程同时调用线程安全*函数,因为对共享数据的所有引用都已序列化。
一个可重入函数也可以从多个线程同时调用,但只有当每个调用使用自己的数据。
因此,线程安全函数始终是可重入的,但是重入函数并不总是线程安全的。
通过扩展,如果可以从多个线程安全地调用其成员函数,则该类称为可重入的,只要每个线程使用该类的不同实例即可。如果可以从多个线程安全地调用其成员函数,则该类是线程安全的,即使所有线程都使用该类的相同实例也是如此。
但他们也警告:
注意:多线程域中的术语尚未完全标准化。POSIX使用可重入和线程安全的定义,这些定义对其C API有所不同。当将其他面向对象的C ++类库与Qt一起使用时,请确保理解定义。
添加回答
举报
0/150
提交
取消