线程安全:一个函数被称为线程安全的,当且仅当被多个并发进程反复调用时,它会一直产生正确的结果。如果一个函数不是线程安全的,我们就说它是线程不安全的。

重入:函数被不同的控制流程调用,有可能在第一次调用还没返回时就再次进入该函数;

不可重入函数:函数访问一个全局链表,有可能因为重入而造成错乱;

可重入函数:如果一个函数只访问自己的局部变量或参数;

可重入函数避免了因访问其他的函数而造成的线程不安全问题。可重入函数为线程安全的函数。

像全局链表一样,可能因为线程的问题同时头插俩个节点而导致的插入错误,这就造成线程的不安全,因为其操作不是原子操作,进而导致同一时刻发生不同的动作。

像上述的例子,就有可能发生因为重入而导致的错乱,这样的就称为不可重入函数。

我们知道,重入函数是线程安全函数。如果一个函数对多个线程来说时可重入的,就说这个函数时线程安全的。但这并不能说明对信号处理程序来说该函数也是可重入的。如果函数对异步信号处程序的重入是安全的,那么就说这个函数是异步信号安全的。

总的来说,可重入函数是线程安全函数,但是线程安全函数不一定是可重入函数。

用幅图来表示一下吧~

[Linux]线程安全和可重入函数相关推荐

  1. 线程安全与可重入函数的区别及联系

    一.线程安全 如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码.如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的.  或者 ...

  2. 【Linux系统编程】可重入函数和不可重入函数

    在实时系统的设计中,经常会出现多个任务调用同一个函数的情况.如果有一个函数不幸被设计成为这样:那么不同任务调用这个函数时可能修改其他任务调用这个函数的数据,从而导致不可预料的后果.这样的函数是不安全的 ...

  3. 线程安全与可重入函数

    线程安全:一个函数被称为线程安全的(thread-safe),当且仅当被多个并发进程反复调用时,它会一直产生正确的结果.如果一个函数不是线程安全的,我们就说它是线程不安全的(thread-unsafe ...

  4. 线程安全和可重入函数的联系与区别

    1.    线程安全: 线程安全是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程访问完,其他线程才可以使用.不会出现数据不一致或数据污染. 线程 ...

  5. 线程安全和可重入函数

    先说结论 可重入函数未必是线程安全的:线程安全函数未必是可重入的. 可重入函数的概念 可重入的程序(函数)允许在执行的过程中被打断,并在打断所执行的代码中再次安全的调用.重点在于安全,不允许程序挂掉. ...

  6. 线程安全与可重入函数的区别与联系

    线程安全 线程安全是多个线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取结束并且释放了锁,其他线程才可使用,保证了数据的一致性. 与之对应的则是 ...

  7. Linux可重入函数

    1.可重入函数 可重入函数指的是可以被中断的函数.也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误:而不可重入的函数由于使用了一些系统资源, ...

  8. 可重入函数与线程安全的区别与联系

    本文主要介绍一下可重入函数与线程安全的区别与联系,在此之前我们先来了解一些基本概念:什么是线程全函数,什么是可重入函数? 线程安全函数 概念 线程安全的概念比较直观,一般来说,一个函数被称为线程安全的 ...

  9. Linux中的可重入函数和不可重入函数

    可重入函数 可重入函数(即可以被中断的函数)可以被一个以上的任务调用,而不担心数据破坏.可重入函数在任何时候都可以被中断,而一段时间之后又可以恢复运行,而相应的数据不会破坏或者丢失. 可重入函数使用的 ...

最新文章

  1. 详解Batch Normalization及其反向传播
  2. 528. 按权重随机选择
  3. 【明星自动大变脸】最新StarGAN对抗生成网络实现多领域图像变换(附代码)
  4. CF A. DZY Loves Hash
  5. c# winform中窗体切换后释放及防止重复生成
  6. HDU 4547 CD操作
  7. 数据库之架构:主备+分库?主从+读写分离?
  8. 设计mysql存储过程,MySQL的存储过程设计的例子
  9. 小甲鱼零基础入门python课后作业及答案_小甲鱼python视频第四讲(笔记及课后习题答案)...
  10. oracle经纬度换算成xy坐标,经纬度换算成xy坐标(经纬度转换xy坐标算法)
  11. SqlServer——正则表达式
  12. 如何向中级程序员转变
  13. MTK OTA更新方法
  14. Android URL scheme跳转失败(源码实现排查思路知识拓展)
  15. 京东双11热爱环游记,使用AUTO.JS脚本自动领汪汪币(2021.10.29最新)
  16. 临终的悲剧——————抢救最后一口气
  17. 小程序判断是否有上一页
  18. mlag 堆叠_华为CE交换机M-LAG配置
  19. 【109】极域2015,教师广播不同步
  20. 韩国计算机网络电子书,韩老师 计算机网络安全精讲视频课程 共34节课

热门文章

  1. 网站大流量高并发访问的处理解决办法
  2. 「SDOI2014」数数 解题报告
  3. 查找标题已知的窗口句柄,遍历窗口控件句柄
  4. java 对象的上转型对象(父类)
  5. 使用selenium进行密码破解(绕过账号密码JS加密)
  6. 算法正确性和复杂度分析
  7. linux 线程带参数,Linux中多线程编程并传递多个参数的简单例子
  8. linux人脸识别视频推流,RTMP推流协议视频智能分析/人脸识别/直播点播平台EasyDSS接口调用注意事项介绍...
  9. js中双感叹号_JavaScript中双叹号(!!)作用
  10. python做一个系统代码_python初学者,用python3实现基本的学生管理系统代码实例...