C语言不可重入函数列表 c++不可重入函数( 二 )


什么是可重入程序?举出一个不重入程序的例子若一个程序或子程序可以安全的被并行执行,则称其为可重入(reentrant或re-entrant)的;即 , 当该子程序正在运行时,可以再次进入并执行它 。若一个函数是可重入的,则该函数:不能含有静态(全局)非常量数据 。不能返回静态(全局)非常量数据的地址 。只能处理由调用者提供的数据 。不能依赖于单实例模式资源的锁 。不能调用不可重入的函数 。多'用户/对象/进程优先级'以及多进程一般会使得对可重入代码的控制变得复杂 。同时,IO代码通常不是可重入的,因为他们依赖于像磁盘这样共享的、单独的资源 。可重入性是函数编程语言的关键特性之一 。例子在以下的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语言不可重入函数列表和c++不可重入函数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

推荐阅读