当前位置:网站首页>函数重入、函数重载、函数重写自己理解
函数重入、函数重载、函数重写自己理解
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博客
边栏推荐
- New benchmark! Intelligent social governance
- 制作(转换)ico图标
- HDU 4337 King Arthur's Knights 它输出一个哈密顿电路
- 新标杆!智慧化社会治理
- Simple bubble sort
- A complete tutorial for getting started with redis: problem location and optimization
- Jericho is in non Bluetooth mode. Do not jump back to Bluetooth mode when connecting the mobile phone [chapter]
- 【达梦数据库】添加自动收集统计信息的任务
- Es6中Promise的使用
- 杰理之FM 模式单声道或立体声选择设置【篇】
猜你喜欢
Do you know the five most prominent advantages of E-bidding?
A complete tutorial for getting started with redis: problem location and optimization
How-PIL-to-Tensor
Uniapp adaptation problem
HMS Core 机器学习服务打造同传翻译新“声”态,AI让国际交流更顺畅
知识图谱构建全流程
Flutter3.0了,小程序不止于移动应用跨端运行
装饰设计企业网站管理系统源码(含手机版源码)
Install redis from zero
制作(转换)ico图标
随机推荐
Laravel php artisan 自动生成Model+Migrate+Controller 命令大全
Intelligent static presence detection scheme, 5.8G radar sensing technology, human presence inductive radar application
Change your posture to do operation and maintenance! GOPs 2022 Shenzhen station highlights first!
Cglib agent in agent mode
[2022 national tournament simulation] polygon - computational geometry, binary answer, multiplication
C language string sorting
Shell programming basics
SSL证书错误怎么办?浏览器常见SSL证书报错解决办法
[cpk-ra6m4 development board environment construction based on RT thread studio]
尚硅谷JVM-第一章 类加载子系统
应用程序启动速度的优化
Lost in the lock world of MySQL
杰理之关于 DAC 输出功率问题【篇】
[socket] ① overview of socket technology
Variables, process control and cursors (MySQL)
c语言(字符串)如何把字符串中某个指定的字符删除?
HMS Core 机器学习服务打造同传翻译新“声”态,AI让国际交流更顺畅
2022.6.28
The solution of unable to create servlet file after idea restart
制作(转换)ico图标