【C语言】【unix c】可重入函数
来源:互联网 发布:联合网络图书采访 编辑:程序博客网 时间:2024/06/07 23:51
三、可重入函数 信号处理函数的栈桢是私有的(每个函数在栈中都有一个私有的栈针) 信号处理函数和进程的执行是异步的(无需使进程停止等待接收函数的信号) 如果这两条执行路线出现共享资源的竞争,会导致出现问题,所以应该尽量避免竞争(尽量使函数不去访问栈桢以外的资源) 可重入函数主要用于多任务环境中,该函数在执行过程中可以随时被中断,返回来继续执行的时候不会发生错误。他除了使用自身的栈上的变量外,不依赖任何环境(如果要使用全局变量等等还需要做一些措施) 如果函数中使用了全局变量,静态的局部变量,malloc的内存。那么这个函数就是不可重入函数。 可重入函数只能访问栈桢里的内容,如果这个函数只有自动局部变量,那么这个函数就是可重入函数。 举例说明信号处理函数和进程竞争共享资源(count.c) #include <stdio.h> #include <signal.h> int count = 1; void doit(int n) { int val; val = count; val++; usleep(5000); printf("val=%d\n", val); count = val; return; } int main(void) { signal(2,doit); while(1) doit(3); return 0; }
阅读全文
0 0
- 【C语言】【unix c】可重入函数
- 【C语言】【unix c】改变信号的处理函数
- 【C语言】【unix c】实现sleep函数的功能
- 【C语言】【unix c】数据类型
- 【C语言】【unix c】信号量
- UNIX与C语言
- unix中的c函数
- C语言函数 --C
- C语言(Unix)IO 总结
- UNIX下C语言----管道
- UNIX下C语言----管道
- UNIX C 语言学习笔记
- 【C语言】C语言函数
- 【C语言】【unix c】编译过程
- 【C语言】【unix c】计算机的框架
- 【C语言】【unix c】计算机的操作系统
- 【C语言】【unix c】计算机语言的发展史
- 【C语言】【unix c】运行时文件
- VMware12提示 已将该虚拟机配置为使用 64 位客户机操作系统。但是,无法执行 64 位操作
- Java学习路上的对一些书籍的推荐
- 脑科学对“天才”的科学分析——新书《无为》解读
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- apache网址示例
- 【C语言】【unix c】可重入函数
- HDU 3529 Bomberman
- UE4 让物理体拥有速度 (不使用Projectile Movement)
- 数据库
- OkHttp3向服务器同步提交各种数据的写法
- 开始之旅
- 9月28
- 测试标题
- 【C语言】【unix c】作业 前台作业和后台作业