可重入函数

在多任务操作系统中,应用程序的各个任务并发运行是,经常会出现多个任务“同时”调用一个函数的情况。这里的“同时”实质上是指多个任务在同一个时间段内交叉引用同一个函数的情况,这是并发系统的特点。

由于上述特点的存在,调用这个函数的多个任务就有可能通过该函数而产生意外的耦合,从而产生相互干扰。例如有一个任务A和任务B都要调用函数swap(),而该函数有使用了全局变量temp

Int temp

Void swap(int *x,int * y )

{

Temp=*x;

*x=*y;

*y=temp;

}

于是,如果当任务A调用swap()函数期间,系统发生了任务切换,而是任务B也调用了函数swap(),那么任务B将改变全局变量temp的值,从而使任务A传递给全局变量temp的值发生丢失,而出现错误。因此在多任务操作系统中,系统所提供的函数都必须在设计时就采取相应的措施,从而保证函数能够被多个任务所调用。凡是具有这种功能的函数就是可重入函数。

一般来说,如果函数没有使用全局变量,那么就具有了实现可重入函数的基础。为了能够产生可重入函数,用户还要使用可重入编译器。在操作系统移植过程中,如果要修改某些函数,别忘了一定要保证其可重入性。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值