可重入函数和不可重入函数

Posted mered1th

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了可重入函数和不可重入函数相关的知识,希望对你有一定的参考价值。

个函数在被调用执行期间(尚未调用结束),由于某种时序又被重复调用,称之为“重入”。根据函数实现的方法可分为“可重入函数”和“不可重入函数”两种。看如下时序。

技术图片

显然,insert函数是不可重入函数,重入调用,会导致意外结果呈现。究其原因,是该函数内部实现使用了全局变量。

注意事项

  1. 定义可重入函数,函数内不能含有全局变量及static变量,不能使用malloc、free

  2. 信号捕捉函数应设计为可重入函数

  3. 信号处理程序可以调用的可重入函数可参阅man 7 signal

  4. 没有包含在上述列表中的函数大多是不可重入的,其原因为:

a) 使用静态数据结构

b) 调用了malloc或free

c) 是标准I/O函数

以上是关于可重入函数和不可重入函数的主要内容,如果未能解决你的问题,请参考以下文章

可重入函数和不可重入函数

Linux系统编程可重入和不可重入函数

可重入函数和非可重入函数

单片机C语言设计里说的可重入函数是啥?和不可重入函数的区别是啥?

可重入函数与不可重入函数

可重入函数