• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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操作)等手段对其加以保护,在函数体中尽量使用局部变量。

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

    您可能感兴趣的文章:
    • 完美解决Linux搭建sftp出现Write failed:Broken pipe的问题
    • linux c++模拟简易网络爬虫实例
    • Linux系统下实现远程连接MySQL数据库的方法教程
    • Python实现Linux的find命令实例分享
    • Linux下MySQL5.7.18 yum方式从卸载到安装过程图解
    • Linux下卸载MySQL数据库
    • linux 网卡配置详解及实例
    上一篇:解决linux的redhat版上mysql字符乱码的问题
    下一篇:linux 下实现sleep详解及简单实例
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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