Linux 中可重入函数与不可重入函数详解

 更新时间:2017年06月08日 09:04:33   投稿:lqh  
这篇文章主要介绍了Linux 中可重入函数与不可重入函数详解的相关资料,需要的朋友可以参考下

Linux 中可重入函数与不可重入函数详解

可重入函数和不可重入函数说起来有点拗口,其实写过多进程(线程)程序的人肯定很快就能明白这两种函数是个神马东西。下面是我对这两个函数的理解:

       可重入函数可以理解为是能被中断的函数,并且它被中断返回后也不会出现什么错误。

       不可重入函数可以理解为如果函数被中断的话,就会出现不可预料的错误。这是因为函数中使用了一些系统资源,比如全局变量区,中断向量表之类的。比如多个进程同时对一个文件进行写操作,如果没有同步机制的话,对文件的写入就会变得难以控制。

      在多进程(线程)环境中一定要考虑到函数的可重入性。

      例如下面的例子:

int sum( int count) 
   { 
    static int sum = 0; 
    int i = 0; 
    for (i= 1; index <= count; i++) 
      sum += i; 
    return sum; 
  }

    这段代码中使用了static关键字,如果多个进程同时执行这一段代码的话就会出现不可预测的结果。在可重入函数中,一定要避免使用static变量。或者需要使用一定的同步原则才可以。

       要想将上面的代码改为可重入函数,只要将static变量改为非static的变量就可以了。

在编写可重入函数时,如果函数中使用到了全局变量,则应通过关中断、信号量(即P、V操作)等手段对其加以保护,在函数体中尽量使用局部变量。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • Shell脚本中获取进程ID的方法

    Shell脚本中获取进程ID的方法

    这篇文章主要介绍了Shell脚本中获取进程ID的方法,我想要知道运行中脚本子shell的进程id,我该如何在shell脚本中得到PID,阅读本文即可找到你想要答案,需要的朋友可以参考下
    2015-03-03
  • 在 Shell 提示符中显示 Git 分支名称的方法

    在 Shell 提示符中显示 Git 分支名称的方法

    这篇文章主要介绍了在 Shell 提示符中显示 Git 分支名称的方法,本文详细的讲解了解决这个需求的过程,需要的朋友可以参考下
    2015-04-04
  • shell脚本操作oracle删除表空间、创建表空间、删除用户

    shell脚本操作oracle删除表空间、创建表空间、删除用户

    这篇文章主要介绍了使用shell脚本操作oracle删除表空间、创建表空间、删除用户的方法,需要的朋友可以参考下
    2014-03-03
  • 利用shell脚本进行批量处理文件后缀名

    利用shell脚本进行批量处理文件后缀名

    这篇文章主要给大家介绍了关于如何使用shell脚本进行批量处理文件后缀名,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2023-12-12
  • Linux定义变量脚本分享

    Linux定义变量脚本分享

    这篇文章主要为大家详细介绍了Linux定义变量的脚本,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • shell脚本输出多个主机的网卡速率的方法

    shell脚本输出多个主机的网卡速率的方法

    这篇文章主要介绍了shell脚本输出多个主机的网卡速率的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • shell脚本中main函数中$#获取不到脚本传入参数个数浅析

    shell脚本中main函数中$#获取不到脚本传入参数个数浅析

    Linux的shell脚本,有时候我们在运行shell脚本时会给脚本传入参数,出于逻辑上的严谨,在脚本中可能会做一些逻辑判断或处理,例如判断脚本传入参数的个数,这篇文章主要介绍了shell脚本中main函数中$#获取不到脚本传入参数个数浅析,需要的朋友可以参考下
    2024-03-03
  • Linux C中sockaddr和sockaddr_in的区别

    Linux C中sockaddr和sockaddr_in的区别

    这篇文章主要介绍了Linux C中sockaddr和sockaddr_in的区别的相关资料,需要的朋友可以参考下
    2017-07-07
  • shell中的source命令的巧妙用法

    shell中的source命令的巧妙用法

    这篇文章主要介绍了shell中的source命令的巧妙用法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2017-11-11
  • 浅谈Shell中的函数

    浅谈Shell中的函数

    这篇文章主要介绍了Shell中函数的相关资料,帮助大家更好的理解和使用shell,感兴趣的朋友可以了解下
    2020-09-09

最新评论