可重入
来源:互联网 发布:超级祝福油数据库 编辑:程序博客网 时间:2024/04/28 00:02
若一个程序或子程序可以“安全的被并行执行(Parallel computing)”,则称其为可重入(reentrant或re-entrant)的。即当该子程序正在运行时,可以再次进入并执行它(并行执行时,个别的执行结果,都符合设计时的预期)。若一个函数是可重入的,则该函数: 多“用户/对象/进程优先级”以及多进程,一般会使得对可重入代码的控制变得复杂。同时,IO代码通常不是可重入的,因为他们依赖于像磁盘这样共享的、单独的(类似编程中的静态(Static)、全域(Global))资源。 可重入性是函数编程语言的关键特性之一。 以上代码中, 稍作修改后,两个函数都是可重入的: 可重入与线程安全两个概念都关系到函数处理资源的方式。但是,他们有一定的区别。可重入概念会影响函数的外部接口,而线程安全只关心函数的实现。 因此,相对线程安全来说,可重入性是更基本的特性,它可以保证线程安全:即,所有的可重入函数都是线程安全的,但并非所有的线程安全函数都是可重入的。 转自:http://zh.wikipedia.org/wiki/%E5%8F%AF%E9%87%8D%E5%85%A5可重入
在以下的C语言代码中,函数
f
和函数g
都不是可重入的。int g_var = 1;int f(){ g_var = g_var + 2; return g_var;}int g(){ return f() + 2;}
f
使用了全局变量 g_var,所以,如果两个线程同时执行它并访问g_var
,则返回的结果取决于执行的时间。因此,f
不可重入。而g
调用了f
,所以它也不可重入。int f(int i){ return i + 2;}int g(int i){ return f(i) + 2;}
与线程安全的关系
- 可重入
- 可重入
- 可重入?
- 可重入
- 可重入
- 可重入
- 可重入函数&可重入内核
- 可重入内核 & 可重入函数
- 可重入函数
- 可重入函数
- 可重入函数
- 可重入函数
- 可重入函数
- 可重入函数
- 可重入函数
- 可重入概念
- 可重入函数
- 可重入函数
- C#下水晶报表的数据动态绑定(推模式, 非关联数据库)
- 如何连接MySql
- Web设计师目录网站
- 6410 休眠唤醒实现小结
- 分享9个实用的jQuery倒计时插件
- 可重入
- Android 取SD卡卡号
- ACM之路
- 基于网络的客户端开发技巧——第四篇多账号的处理与注重细节
- 不会安装该公布程序,因为它可能不安全,请与管理员联系,将程序包的安装用户界面选项更改为基本
- 正则表达式验证
- QTableWidget与QTableView的区别
- 总线
- 基于网络的客户端开发技巧——第五篇透过现象看本质