频道栏目
首页 > 资讯 > 安全编程 > 正文

编程开发线程安全之什么是可重入函数

17-08-28        来源:[db:作者]  
收藏   我要投稿

编程开发线程安全之什么是可重入函数。

线程安全

就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。 线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据;

如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的;

线程安全问题都是由全局变量及静态变量引起的;

所以在修改全局变量或者静态变量时,我们可以对其进行加锁,实现同步与互斥来保证其线程安全;

可重入函数

所谓可重入函数是指一个可以被多个任务调用的函数(过程),任务在调用时不必担心数据是否会出错。不可重入函数在实时系统设计中被视为不安全函数。

而其不用担心数据出错时因为它除了使用自己栈上的变量以外不依赖于任何环境(包括static);以允许有多个该函数的副本在运行,由于它们使用的是分离的栈,所以不会互相干扰;如果非要使用全局变量或者static便要保证其互斥;

所以

1、一个函数对于多个线程是可重入的,则这个函数是线程安全的。

2、一个函数是线程安全的,但并不一定是可重入的。【使用互斥锁实现的线程安全】

3、可重入性要强于线程安全性。

相关TAG标签
上一篇:【dp】leetcode 115. Distinct Subsequences
下一篇:恨7不成妻问题解析
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站