当前位置:网站首页>函数重入、函数重载、函数重写自己理解
函数重入、函数重载、函数重写自己理解
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博客
边栏推荐
- 简单冒泡排序
- IDEA重启后无法创建Servlet文件的解决方案
- [2022 national tournament simulation] polygon - computational geometry, binary answer, multiplication
- HDU 4337 King Arthur' S Knights it outputs a Hamiltonian circuit
- CVPR 2022 最佳论文候选 | PIP: 6个惯性传感器实现全身动捕和受力估计
- Flutter3.0了,小程序不止于移动应用跨端运行
- 安装 torch 0.4.1
- 杰理之关于 DAC 输出功率问题【篇】
- mos管實現主副電源自動切換電路,並且“零”壓降,靜態電流20uA
- 【无标题】
猜你喜欢
密码学系列之:在线证书状态协议OCSP详解
Nuggets quantification: obtain data through the history method, and use the same proportional compound weight factor as Sina Finance and snowball. Different from flush
Leetcode-02 (linked list question)
Mathematical induction and recursion
The first symposium on "quantum computing + application of financial technology" was successfully held in Beijing
HMS Core 机器学习服务打造同传翻译新“声”态,AI让国际交流更顺畅
掘金量化:通过history方法获取数据,和新浪财经,雪球同用等比复权因子。不同于同花顺
Jericho turns on the display icon of the classic Bluetooth hid mobile phone to set the keyboard [chapter]
Babbitt | metauniverse daily must read: is IP authorization the way to break the circle of NFT? What are the difficulties? How should holder choose the cooperation platform
杰理之播内置 flash 提示音控制播放暂停【篇】
随机推荐
杰理之电话本获取【篇】
Opencv environment, and open a local PC camera.
Matlab Error (Matrix dimensions must agree)
tensorboard的使用
【Swift】学习笔记(一)——熟知 基础数据类型,编码风格,元组,主张
Unity uses maskablegraphic to draw a line with an arrow
cocos3——8.实现初学者指南
Nuggets quantification: obtain data through the history method, and use the same proportional compound weight factor as Sina Finance and snowball. Different from flush
Jerry's FM mode mono or stereo selection setting [chapter]
Household appliance industry under the "retail is king": what is the industry consensus?
A complete tutorial for getting started with redis: problem location and optimization
Redis introduction complete tutorial: client case analysis
应用程序启动速度的优化
Lavel PHP artisan automatically generates a complete set of model+migrate+controller commands
简单冒泡排序
Centerx: open centernet in the way of socialism with Chinese characteristics
leetcode
Codeforces round 264 (Div. 2) C gargari and Bishop [violence]
How-PIL-to-Tensor
leetcode-02(链表题)