c语言可重入函数怎么使用 c51可重入函数

我要用C语言写一个可重入函数,请问要避开哪些东西?

如果只读,那怎么用都行。如果有写的操作,最好避开,实在避不开就要用信号量等机制防止多线程冲突。另外就是调用的函数要线程安全, thread-safe.具体那些函数线程安全,需要查阅手册。

成都创新互联-专业网站定制、快速模板网站建设、高性价比固始网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式固始网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖固始地区。费用合理售后完善,十余年实体公司更值得信赖。

其实很简单,只要遵守了几条很容易理解的规则,那么写出来的函数就是可重入的。1) 不要使用全局变量。因为别的代码很可能覆盖这些变量值。

从字面上的意思就是,可以重复进入。可重入是在多任务系统下的概念,意思是这个函数可以在运行到任意位置的时候被中断去执行其他任务,并且返回的时候不会出现任何错误。为什么在多任务的时候才有这种概念。

什么叫重入函数

1、从字面上的意思就是,可以重复进入。可重入是在多任务系统下的概念,意思是这个函数可以在运行到任意位置的时候被中断去执行其他任务,并且返回的时候不会出现任何错误。为什么在多任务的时候才有这种概念。

2、可重入(reentrant)函数可以由多于一个任务并发使用,而不必担心数据错误。相反, 不可重入(non-reentrant)函数不能由超过一个任务所共享,除非能确保函数的互斥(或者使用信号量,或者在代码的关键部分禁用中断)。

3、重入函数,又叫再入函数,是一种可以在函数体内不直接或间接调用其自身的一种函数。再入函数可被递归调用,无论何时,包括中断函数在内的任何函数都可以调入。再入函数在C51编译时使用的是模拟栈。

4、重入是指在调用一个函数且没有返回的情况下再次调用此函数,可重入函数是指一个函数发生重入时,不会导致结果的错误。

5、所谓可重入函数是指一个可以被多个任务调用的函数(过程),任务在调用时不必担心数据是否会出错。不可重入函数在实时系统设计中被视为不安全函数。

6、可重入函数一般用在数据的递归运算中,直白点的讲就是能自身调用自身,在运行时会在每次调用时把上次的数据存入虚拟堆栈中,待回复运行后数据释放。不可重入函数在数据中间数据存储上不同,是直接释放,数据不可恢复。

什么是C语言的可重入函数?怎么使用?

可重入(reentrant)函数可以由多于一个任务并发使用,而不必担心数据错误。相反, 不可重入(non-reentrant)函数不能由超过一个任务所共享,除非能确保函数的互斥(或者使用信号量,或者在代码的关键部分禁用中断)。

可重入性是函数编程语言的关键特性之一。 例子在以下的C语言代码中,函数f和函数g都不是可重入的。

可以使用全局变量、静态变量。关键是不是“只读”。如果只读,那怎么用都行。如果有写的操作,最好避开,实在避不开就要用信号量等机制防止多线程冲突。

重入函数,又叫再入函数,是一种可以在函数体内不直接或间接调用其自身的一种函数。再入函数可被递归调用,无论何时,包括中断函数在内的任何函数都可以调入。再入函数在 C51编译时使用的是模拟栈。

使得函数具有可重入性必须使得函数能够满足下列三个条件之一:① 不使用共享资源;② 在使用共享资源时关中断,使用完毕后再开中断;③ 在使用共享资源时申请信号量,使用完后释放信号量。


名称栏目:c语言可重入函数怎么使用 c51可重入函数
本文来源:http://myzitong.com/article/dejesdj.html