什么是可重入函数

来源:互联网 发布:python threshold函数 编辑:程序博客网 时间:2024/06/01 09:42

可重入函数


     在 实时系统的设计中,经常会出现多个任务调用同一个函数的情况。如果这个函数不幸被设计成为不可重入的函数的话,那么不同任务调用这个函数时可能修改其他任 务调用这个函数的数据,从而导致不可预料的后果。那么什么是可重入函数呢?所谓可重入是指一个可以被多个任务调用的过程,任务在调用时不必担心数据是否会 出错。不可重入函数在实时系统设计中被视为不安全函数。


     满足下列条件的函数多数是不可重入的:

 


(1)函数体内使用了静态的数据结构;


(2)函数体内调用了malloc()或者free()函数;


(3)函数体内调用了标准I/O函数。


如何写出可重入的函数?在函数体内不访问那些全局变量,不使用静态局部变量,坚持只使用缺省态(auto)局部变量,写出的函数就将是可重入的。如果必须访问全局变量,记住利用互斥信号量来保护全局变量。或者调用该函数前关中断,调用后再开中断。

 

可重入函数可以被一个以上的任务调用,而不必担心数据被破坏。可重入函数任何时候都可以被中断,一段时间以后又可以运行,而相应的数据不会丢失。可重入函数或者只使用局部变量,即保存在CPU寄存器中或堆栈中;或者使用全局变量,则要对全局变量予以保护。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ysuliu/archive/2008/03/12/2173503.aspx

 

 

 

原创粉丝点击