一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能运行在多任务环境下的。 也...
可重入函数主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是...
可重入函数和不可重入函数 可重入函数和不可重入函数是计算机编程中重要的概念,它们通常用于多线程编程。可重入函数是指在多线程环境下可以安全地被多个线程同时调用,而不会出现不同线程之间的相互干扰或冲突。不可重入函数则相反,不能被多个线程同时调用,因为会出现不同线程之间的相互干扰或冲突。可重入函数通常...
可重入(reentrant)函数可以由多于一个任务并发使用,而不必担心数据错误。相反,?不可重入(non-reentrant)函数不能由超过一个任务所共享,除非能确保函数的互斥(或者使用信号量,或者在代码的关键部分禁用中断)。可重入函数可以在任意时刻被中断,稍后再继续运行,不会丢失数据。可重入函数要么使用本地变量,要么在...
所以这类函数是不能运行在多任务环境下的。 二、不可重入函数 基本上下面的函数是不可重入的 1)函数体内使用了静态的数据结构; 2)函数体内调用了malloc()或者free()函数; 3)函数体内调用了标准I/O函数,如printf()函数。 三、可重入函数编写规则
所谓可重入函数是指一个可以被多个任务调用的过程,任务在调用时不必担心数据 是否会出错。 不可重入函数在实时系统设计中被视为不安全函数。满足下列条件的函数多数是不可重入的: (1)函数体内使用了静态的数据结构;(静态存储区:全局变量+static类型的变量) ...
1)函数体内使用了静态的数据结构; 2)函数体内调用了malloc() 或者 free() 函数; 3)函数体内调用了标准 I/O 函数。 如何将一个不可重入的函数改写成可重入函数呢?把一个不可重入函数变成可重入的唯一方法是用可重入规则来重写它。其实很简单,只要遵守了几条很容易理解的规则,那么写出来的函数就是可重入的: ...
基本上下面的函数是不可重入的 (1)函数体内使用了静态的数据结构; (2)函数体内调用了malloc()或者free()函数; (3)函数体内调用了标准I/O函数。 把一个不可重入函数变成可重入的唯一方法是用可重入规则来重写他。 其实很简单,只要遵守了几条很容易理解的规则,那么写出来的函数就是可重入的。 第一...
1.可重入函数和不可重入函数的概念 可重入函数:在函数中如果我们使用静态变量了,导致产生中断调用别的函数的 过程中可能还会调用这个函数,于是原来的 静态变量被在这里改变了,然后返回主体函数,用着的那个静态变量就被改变了,导致错误。 不可重入函数:如果是在函数体内 动态申请内存的话,即便 新的线程调用这个函数也...
数是 不能运行在多任务环境下的。 基本上下面的函数是不可重入的 (1)函数体内使用了静态的数据结构; (2)函数体内调用了malloc()或者free()函数; (3)函数体内调用了标准I/O函数。 把一个不可重入函数变成可重入的唯一方法是用可重入规则来重写他。