创作人QQ:851301776,邮箱:lfr890207@163.com,欢迎大家一起技术交流,本博客主要是自己学习的心得体会,只为每天进步一点点!
个人座右铭:
1.没有横空出世,只要厚积一定发。
2.你可以学历不高,你可以不上学,但你不能不学习
在实时系统设计过程中,会出现多个任务(线程)调用同一个函数的情况。如果多个任务同时调用这个函数,有可能修改其他任务中的数据,从而导致不可遇到的后果。这个函数是不安全的,也叫不可重入函数。
相反,可重入函数是指可以同时被多个任务调用,在调用的过程中不必担心数据是否会出错。一个可重入的函数简单来说就是可以被中断的函数(CPU保存寄存器信息到栈,跳到中断位置加载指令到寄存器执行,执行完成后,返回继续执行),也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;而
不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能运行在多任务环境下的。
在编写可重入函数时,如果使用了全局变量,则应通过关闭中断、信号量等收到加一保护。
说明:若对所使用的全局变量不加以保护,则此函数就不具有可重入性,即当多个进程调用此函数时,很有可能使有关全局变量变为不可知状态。
保证函数的可重入性的方法:
Linux常见的可重入函数
首先重写在C++继承当中使用较多。
如果将基类中的某个成员函数声明为虚函数,那么子类中与该函数具有相同原型的成员函数就也是虚函数,并且对基类中版本形成覆盖,即函数重写。
C++中的概念,C语言当中不涉及重载
在相同作用域中,定义同名的函数,但是它们的参数必须有所区分,这样的函数将构成重载关系
以上三个函数,构成重载
可参考:温故而知新二(C++)_QQ851301776的博客-CSDN博客