当前位置:网站首页>函数重入、函数重载、函数重写自己理解
函数重入、函数重载、函数重写自己理解
2022-07-06 20:05:00 【QQ851301776】
创作人QQ:851301776,邮箱:[email protected],欢迎大家一起技术交流,本博客主要是自己学习的心得体会,只为每天进步一点点!
个人座右铭:
1.没有横空出世,只要厚积一定发。
2.你可以学历不高,你可以不上学,但你不能不学习
一、函数重入
在实时系统设计过程中,会出现多个任务(线程)调用同一个函数的情况。如果多个任务同时调用这个函数,有可能修改其他任务中的数据,从而导致不可遇到的后果。这个函数是不安全的,也叫不可重入函数。
相反,可重入函数是指可以同时被多个任务调用,在调用的过程中不必担心数据是否会出错。一个可重入的函数简单来说就是可以被中断的函数(CPU保存寄存器信息到栈,跳到中断位置加载指令到寄存器执行,执行完成后,返回继续执行),也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;而
不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能运行在多任务环境下的。
在编写可重入函数时,如果使用了全局变量,则应通过关闭中断、信号量等收到加一保护。
说明:若对所使用的全局变量不加以保护,则此函数就不具有可重入性,即当多个进程调用此函数时,很有可能使有关全局变量变为不可知状态。
保证函数的可重入性的方法:
- 在写函数时尽量使用局部变量,不使用全局变量。
- 不使用静态的数据结构,静态的数据结构,延长了变量的生命周期,使得右值(常量)变为了左值(变量)。
- 不调用标准的I/O函数(不是线程安全的)
- 不使用malloc和free(是线程安全的,但是不可重入)
Linux常见的可重入函数
二、函数重写
首先重写在C++继承当中使用较多。
如果将基类中的某个成员函数声明为虚函数,那么子类中与该函数具有相同原型的成员函数就也是虚函数,并且对基类中版本形成覆盖,即函数重写。
三、函数重载
C++中的概念,C语言当中不涉及重载
在相同作用域中,定义同名的函数,但是它们的参数必须有所区分,这样的函数将构成重载关系
以上三个函数,构成重载
可参考:温故而知新二(C++)_QQ851301776的博客-CSDN博客
边栏推荐
- 杰理之发射端在接收端关机之后假死机【篇】
- [socket] ① overview of socket technology
- SSL证书错误怎么办?浏览器常见SSL证书报错解决办法
- C language string sorting
- Netperf and network performance measurement
- 美国空军研究实验室《探索深度学习系统的脆弱性和稳健性》2022年最新85页技术报告
- Redis getting started complete tutorial: replication topology
- Variables, process control and cursors (MySQL)
- 掘金量化:通过history方法获取数据,和新浪财经,雪球同用等比复权因子。不同于同花顺
- Error: could not find a version that satisfies the requirement xxxxx (from versions: none) solutions
猜你喜欢
随机推荐
Redis introduction complete tutorial: client case analysis
input_ delay
Change your posture to do operation and maintenance! GOPs 2022 Shenzhen station highlights first!
Flink Task退出流程与Failover机制
Oauth2协议中如何对accessToken进行校验
应用程序启动速度的优化
制作(转换)ico图标
SSL证书错误怎么办?浏览器常见SSL证书报错解决办法
Another million qubits! Israel optical quantum start-up company completed $15million financing
unrecognized selector sent to instance 0x10b34e810
硬件之OC、OD、推挽解释
A complete tutorial for getting started with redis: AOF persistence
杰理之开 BLE 退出蓝牙模式卡机问题【篇】
Jerry's FM mode mono or stereo selection setting [chapter]
[swift] learning notes (I) -- familiar with basic data types, coding styles, tuples, propositions
Lavel PHP artisan automatically generates a complete set of model+migrate+controller commands
杰理之电话本获取【篇】
Make (convert) ICO Icon
leetcode
Jerry's broadcast has built-in flash prompt tone to control playback pause [chapter]