7、printf函数的不可重入性
来源:互联网 发布:ip网络加速器免费版 编辑:程序博客网 时间:2024/05/16 00:32
printf()经常有重入解释
不可重入函数不可以在它还没有返回就再次被调用。例如printf,malloc,free等都是不可重入函数。因为中断可能在任何时候发生,例如在printf执行过程中,因此不能在中断处理函数里调用printf,否则printf将会被重入
函数不可重入大多数是因为在函数中引用了全局变量。例如,printf会引用全局变量stdout,malloc,free会引用全局的内存分配表。
不可重入函数指的是该函数在被调用还没有结束以前,再次被调用可能会产生错误。可重入函数不存在这样的问题。
不可重入函数在实现时候通常使用了全局的资源,在多线程的环境下,如果没有很好的处理数据保护和互斥访问,就会发生错误。
常见的不可重入函数有:
printf --------引用全局变量stdout
malloc --------全局内存分配表
free --------全局内存分配表
这主要在多任务环境中使用,一个可重入的函数简单来说,就是:可以被中断的函数。就是说,你可以在这个函数执行的任何时候中断他的运行,在OS的调度下去执行另外一段代码而不会出现什么错误。而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等等,所以他如果被中断的话,可能出现问题,所以这类函数是不能运行在多任务环境下的。
- 7、printf函数的不可重入性
- 为什么ISR内部不可以用printf和malloc函数
- Printf函数的使用方法
- printf的函数原型
- printf函数的运行机制
- printf函数的盲点
- printf函数的使用方法
- printf函数的使用方法
- printf函数的作用
- printf函数的使用
- printf函数的使用
- printf 函数的实现 *
- printf函数的实现
- printf()函数的用法
- printf函数的用法
- printf函数的实现
- 函数的局部变量和不可重入性
- printf()函数的执行机理
- android dialog
- VirtualBox使用技巧
- 解决flv格式视频在网页中播放问题
- JS_JavaScript类_超类与子类_2011-08-25;
- 手动下载android sdk更新包
- 7、printf函数的不可重入性
- 读书笔记--Slice-to-C++映射
- 显示器原理及接口&&显示器BIOS编程III(编程部分)
- 设计创新的十九条秘笈
- 传递未知个数的同类型参数
- 显示器原理及接口&&显示器BIOS编程II(接口部分) 暂缺
- ims 客户端
- rpmbuild
- android BitmapFactory的OutOfMemoryError: bitmap size exceeds VM budget解决方案