可重入函数

这两天刷题,偶然看到可重入函数这个名字,很惊奇自己学了这么久的java还不能完全清晰的说出这个名词的概念,所以专门做一篇笔记

可重入函数基本定义:

重入意味着这个函数可以重复进入,可以被并行调用,可以被中断,它只使用自身栈上的数据变量,它不依赖于任务环境,在多任务调度过程中,它是安全的,不必担心数据出错。

即可重入函数需要满足以下几个条件

1、执行过程可以被打断
2、被打断后,在该函数执行完毕之前,可以再次重新被调用
3、再此调用完毕以后,上次被打断的程序继续进行

在多任务环境中或者实时系统设计中,应该尽可能的使用可重入函数

常见的不可重入函数有:
printf --------引用全局变量stdout
malloc --------全局内存分配表
free --------全局内存分配表

不可重入原则

原则总结如下:

(1)不要使用static变量和全局变量,坚持只用局部变量;

(2)若必须访问全局变量,利用互斥信号量来保护全局变量;

(3)获取得知哪些系统调用是可重入的,在多任务处理程序中都使用安全的系统调用;

(4)不调用其它任何不可重入的函数;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值