首页  >   经验  >   什么是可重入函数与不可重入函数?可重入函数分析

什么是可重入函数与不可重入函数?可重入函数分析

查看 codexia 的博客 2015-06-26 00:05:08 2235
可重入  
手机阅读 | 转发赚积分
手机收藏 | 分享给好友
简介本文详细的解释了可重入函数的概念,教你理解,而不是记忆概念哦。可重入函数使用的好,可以大大的提高程序质量,减少Bug出现的几率。
    函数我们都不陌生,学过任何一种编程语言,我们都会知道函数怎么回事。而函数的更为高效安全的使用,则不是简单学习语言所能掌握的。
    要了解可重入函数,我们先了解一下背景。
    函数是一段载入到内存的代码。函数的代码可长可短,执行时间长度也不确定。在多线程中,线程之间是可以进行切换的。函数是一段写好的代码,属于程序公有的代码段。一个进程中有多个线程,每一个线程都可以调用这段函数代码执行。而在多线程环境中,线程的切换是无法预料的,你不知道下一秒是哪个线程在执行,每时每刻的运行环境都不一样,因为线程切换也是变化莫测的。这是操作系统调度进程线程的范围,不是我们能够掌控的。既然我们无法改变进程调度,无法得知线程切换的规律,那就不要依赖线程的切换。我们的程序要做到,无论线程怎么切换,执行的结果都要一致。
    那么如何做到函数执行的结果每次都一致呢?因为在多线程环境中,随时都可能被切换到其他线程执行。因为函数又是进程公共的代码段,因此,另外的线程也可以调用刚才的函数代码执行。当然,这次执行的函数和上次执行的函数完全无关。在此,或许你大概知道什么是重入的概念了。所谓的重入,就是同一段代码被重叠多次执行。上面的例子,第一次执行的函数还没有执行完,线程切换后,又被新线程执行了。两次执行会有问题吗?或者说,两次执行会相互影响吗?This is a question?! 
    我们再来看一个例子。如果你写一个递归函数,你会怎么写?递归函数是一个单线程的概念。因为CPU的执行,始终在一个线程中。函数执行只是不停的调用自己而已,并没有被切换到其他线程。但是调用一次自己,就带来了隐患。
1.微信扫码
2.点击按钮,粘贴命令
自动刷新 手动刷新
命令:rd 9uu@\ 复制
提示:如果您发送了命令,自动刷新会展开全文。自动刷新最多60秒,超过60秒请点击手动刷新。
创作不易,汗水不止!为防止劳动果实被爬虫窃取,开启了反爬机制,需要您发送命令继续阅读。取关会再次出现此提示。一段时间后出现此提示,请再次发送即可。如有问题,请加客服微信Freeme007处理。感谢您的理解。
标注
评论
站内搜
百度搜
传送到手机
手机扫码,识别文字,完成传送x
加载中...
标注内容x
加载中...
添加标注x
文章标题:什么是可重入函数与不可重入函数?可重入函数分析
文章地址:http://www.cjjjs.com/article/6262015850252
转载到个人博客,请在文末带上右侧内容(含超链接):本文转载自:什么是可重入函数与不可重入函数?可重入函数分析
收藏 0 点赞 0
公众号
微信赞赏
支付宝赞赏
领支付宝大红包
QQ群

相关阅读

  1. 什么是可重入函数与不可重入函数?可重入函数分析 查找全网同类文章
  2. 教你如何解决VS2015的30天试用期已过即VS2015许可证已过期的问题 查找全网同类文章
  3. Linux源码笔记——感觉写的巧妙的代码 查找全网同类文章
  4. 在Win7上安装VS2015 RC(候选发布版)失败完美解决方法 查找全网同类文章
  5. 完全图解VS2017安装过程并演示VS2017创建Linux项目和调试 查找全网同类文章
  6. 表白代码,你值得拥有 查找全网同类文章
  7. VS2015入门必备介绍,扫扫盲吧 查找全网同类文章
  8. 图解VS2017的MSDN的安装方法和过程 查找全网同类文章
  9. C++语言零基础入门教程:1.1 什么是编程,什么编写程序,什么是程序设计? 查找全网同类文章
  10. VS2015配置安卓Android和iOS开发环境 查找全网同类文章
分享到:
分享文章[什么是可重入函数与不可重入函数?可重入函数分析]到QQ空间

相关阅读

猜您感兴趣