可重入函数与线性安全的区别与关系

当谈及可重入函数与线性安全的区别与关系时,先说一下可重入函数与线性安全它们各自的概念。

1、什么是可重入函数?
一个函数被不同控制流调用,有可能在第一次调用还没返回时就再次进入该函数,这称为重入;
如果一个函数只访问自己的局部变量或参数,则可称为可重入函数;

2、线性安全
多个线程访问时,采用了枷锁机制,当一个线程访问该类的某个数据时,进行保护,其他进程不能进行访问直到该进程读取完,其它线程才可使用,不会出现数据不一致或者数据污染;

不提供数据访问保护,有可能出现多个线程先后更改数据造成,所得到的数据是脏数据;

3.可重入函数与线性安全的区别与关系
1)线程安全是在多个线程情况下引发的,而可重入函数可以在只有一个线程的情况下来说;
2)线程安全不一定是可重入的,而可重入函数则一定是线程安全的;
3)如果一个函数中有全局变量,那么这个函数既不是线程安全也不是可重入的;
4)如果将对临界资源的访问加上锁,则这个函数线程安全的;但如果这个重入函数若加锁未释放则会产生死锁,因此是不可重入的;
5)线程安全函数能够是不同的线程访问同一块地址空间,而可重入函数要求不同的执行流对数据的操作互不影响,使结果是相同的;
6)如果一个函数当中全是自身占栈空间的,那么既是线程安全又是可重入的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ashley zhao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值