可重入(reentrant)函数
来源:互联网 发布:欧特克软件侵权案件 编辑:程序博客网 时间:2024/06/14 02:00
什么是函数的可重入性?
可以由多于一个任务并发使用,而不必担心数据错误。相反,不可重入(non-reentrant)函数不能由超过一个任务所共享,除非能确保函数的互斥(或者使用信号量,或者在代码的关键部分禁用中断)。可重入函数可以在任意时刻被中断,稍后再继续运行,不会丢失数据。可重入函数要么使用本地变量,要么在使用全局变量时保护自己的数据。
可重入函数:重点内容
不为连续的调用持有静态数据。不返回指向静态数据的指针;所有数据都由函数的调用者提供。使用本地数据,或者通过制作全局数据的本地拷贝来保护全局数据。绝不调用任何不可重入函数。
什么是线程安全?
如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。 线程安全问题都是由全局变量及静态变量引起的。若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行读写操作,一般都需要考虑线程同步,否则就可能影响线程安全。
函数的可重入性与线程安全之间的关系
可重入的函数不一定是线程安全的;
可重入的函数在多个线程中并发使用时是线程安全的,但不同的可重入函数(共享全局变量及静态变量)在多个线程中并发使用时会有线程安全问题(可能是线程安全的也可能不是线程安全的);
不可重入的函数一定不是线程安全的;
http://mooc.study.163.com/course/USTC-1000002006#/info
http://blog.csdn.net/leetcode8023/article/details/52049961
阅读全文
0 0
- 可重入(reentrant)函数
- 可重入(reentrant)函数
- 可重入函数(reentrant function)
- Reentrant Functions可重入函数
- 可重入函数reentrant function
- 函数可重入性(reentrant)
- reentrant(可重入)函数与thread safe(线程安全)函数的区别
- 函数的可重入性(reentrant)及线程安全
- reentrant函数与thread safe函数浅析
- C51的再入函数 reentrant RECURSIVE CALL TO SEGMENT
- [Reentrant Kernels]
- 关于reentrant
- Writing Reentrant and Thread-Safe Code(编写可重入和线程安全的代码)
- 编写可重入和线程安全的代码(Writing Reentrant and Thread-Safe Code)
- C51中的reentrant
- Softirqs , tasklets, reentrant.
- thread safe vs reentrant
- thread-safe 和 reentrant
- ConnectString ()函数的介绍
- java验证码
- ADODB
- 关于JS里面写JAVA代码的问题
- 【jzoj5085】【GDOI2017第四轮模拟day1】【游戏】 【sg函数】【线性基】
- 可重入(reentrant)函数
- POJ3414
- 阿里云ECS CentOs6.8 安装GNOME桌面和VNC Server
- bzoj1344: [Baltic2007]Connected Points连点
- 移植oprofile到dm365
- javascript基础
- Normalization on conv4_3 in SSD
- uml系列(八)——部署图与构件图
- 电商秒杀场景的解决策略与具体实现方案