为了账号安全,请及时绑定邮箱和手机立即绑定

线程安全与可重入

线程安全与可重入

撒科打诨 2019-12-09 15:00:11
最近,我问了一个问题,标题为“ malloc线程安全吗?” ,然后我问:“ malloc是否可重入?”我的印象是所有重入者都是线程安全的。这个假设错了吗?
查看完整描述

3 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

这取决于定义。例如,Qt使用以下内容:


即使调用使用共享数据,也可以从多个线程同时调用线程安全*函数,因为对共享数据的所有引用都已序列化。


一个可重入函数也可以从多个线程同时调用,但只有当每个调用使用自己的数据。


因此,线程安全函数始终是可重入的,但是重入函数并不总是线程安全的。


通过扩展,如果可以从多个线程安全地调用其成员函数,则该类称为可重入的,只要每个线程使用该类的不同实例即可。如果可以从多个线程安全地调用其成员函数,则该类是线程安全的,即使所有线程都使用该类的相同实例也是如此。


但他们也警告:


注意:多线程域中的术语尚未完全标准化。POSIX使用可重入和线程安全的定义,这些定义对其C API有所不同。当将其他面向对象的C ++类库与Qt一起使用时,请确保理解定义。


查看完整回答
反对 回复 2019-12-09
  • 3 回答
  • 0 关注
  • 713 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信