| 3.1.4
函数重入 (Reentrant)函数的重入,含义是函数执行过程中又重新调用自己。可重入性(Reentrancy)是指该函数在自己调用自己的时候,不必担心数据被破坏。从软件工程角度对函数可重入性的作用可以解释为:具有可重入性的函数能够被多个任务同时调用。在前后台程序中,任务都是顺序执行的,不存在多个任务同时调用一个函数的情况。但可能出现前台中断程序与后台任务同时调用某个函数。对于这些公用函数,必须具有可重入性。
什么情况下一个函数会自己调用自己?除了程序中某些特殊算法有意调用自身(递归算法)之外,看似几乎不会出现函数自己调用自己的情况。但是初学者经常忽略了一个重要的问题:中断可以随时打断任何正在执行程序。如果某个函数正执行到一半时,被中断,在中断内又调用了该函数,相当于函数重入。而且这是一种十分隐蔽的函数重入,这种重入的发生存在相当大的偶然性和小概率性。
为了理解函数重入性,以及重入性在前后台程序中的重要性,先看一个不可重入函数的例子:交换两个变量。为了让其不可重入,故意将Temp定义为全局变量。
。。。。。。。。。。。。。。。。。。。。。。
见:
MSP430系列单片机系统工程设计与实践--机械工业出版社 |
|