当前位置:网站首页>函数重入、函数重载、函数重写自己理解
函数重入、函数重载、函数重写自己理解
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博客
边栏推荐
- 如何分析粉丝兴趣?
- Analysis of USB network card sending and receiving data
- mos管實現主副電源自動切換電路,並且“零”壓降,靜態電流20uA
- sshd[12282]: fatal: matching cipher is not supported: [email protected] [preauth]
- leetcode
- input_delay
- 【colmap】已知相机位姿情况下进行三维重建
- How to verify accesstoken in oauth2 protocol
- DOMContentLoaded和window.onload
- MOS transistor realizes the automatic switching circuit of main and auxiliary power supply, with "zero" voltage drop and static current of 20ua
猜你喜欢

Change your posture to do operation and maintenance! GOPs 2022 Shenzhen station highlights first!

Centerx: open centernet in the way of socialism with Chinese characteristics

“去虚向实”大潮下,百度智能云向实而生

How-PIL-to-Tensor

input_ delay

【基于 RT-Thread Studio的CPK-RA6M4 开发板环境搭建】

装饰设计企业网站管理系统源码(含手机版源码)

掘金量化:通过history方法获取数据,和新浪财经,雪球同用等比复权因子。不同于同花顺
![[cpk-ra6m4 development board environment construction based on RT thread studio]](/img/08/9a847c73d6da6fc74d84af56897752.png)
[cpk-ra6m4 development board environment construction based on RT thread studio]

美国空军研究实验室《探索深度学习系统的脆弱性和稳健性》2022年最新85页技术报告
随机推荐
杰理之关于 DAC 输出功率问题【篇】
Jericho is in non Bluetooth mode. Do not jump back to Bluetooth mode when connecting the mobile phone [chapter]
Matlab Error (Matrix dimensions must agree)
HDU ACM 4578 Transformation->段树-间隔的变化
Redis getting started complete tutorial: replication topology
Flutter3.0了,小程序不止于移动应用跨端运行
尚硅谷JVM-第一章 类加载子系统
Redis getting started complete tutorial: replication configuration
Cocos2d-x Box2D物理引擎编译设置
Error: could not find a version that satisfies the requirement xxxxx (from versions: none) solutions
LAB1配置脚本
Jerry's ble exiting Bluetooth mode card machine [chapter]
Intelligent static presence detection scheme, 5.8G radar sensing technology, human presence inductive radar application
杰理之在非蓝牙模式下,手机连接蓝牙不要跳回蓝牙模式处理方法【篇】
Lost in the lock world of MySQL
Opencv environment, and open a local PC camera.
应用程序启动速度的优化
mos管實現主副電源自動切換電路,並且“零”壓降,靜態電流20uA
Data analysis from the perspective of control theory
首届“量子计算+金融科技应用”研讨会在京成功举办