博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
再谈可重入和线程安全
阅读量:7207 次
发布时间:2019-06-29

本文共 569 字,大约阅读时间需要 1 分钟。

hot3.png

    在中,对可重入与线程安全的概念与实现进行了详细的描述。由于这两个概念常常会令学习者困惑并混淆,这里就再对这个话题做个总结,希望能够简单明了的阐述清楚它们之间的区别与联系。

    首先来引用一段:

  • 线程安全的函数可以被多个线程同时调用,即便调用者使用了共享数据,这是因为所有对该共享数据的引用都是序列化的;

  • 可重入的函数也可以被多个线程同时调用,但是需要调用者使用自己独有的数据;   

    因此,线程安全的函数总是可重入的,但可重入的函数并不总是线程安全的。

    综合起来,我们可以简单总结如下:

  1. 可重入函数的侧重点在于强调数据的独有性,这一点也可以从“将非可重入函数改造为可重入函数需要改变接口”看出,这么做的目的就是为了让调用者提供独有的数据块;

  2. 可重入函数在使用场景上强调“相继(successive call)”而不是“同时(simultaneously)“,而线程安全函数则是强调“同时”;

  3. 非可重入函数无法变为线程安全的:

mutex_locknon_reentrantmutex_unlock

     如上面的代码所示,在强调“相继”的场景下,线程锁并不能够保护非可重入代码段中的静态数据;

 4. 在异步信号的情况下,不能使用非可重入/非线程安全的函数;

转载于:https://my.oschina.net/u/2310891/blog/389784

你可能感兴趣的文章
有关YARN/MRv2 相关
查看>>
4.2 开发者选项--"电源错误报告"的适配
查看>>
Android <Android应用开发实战> 学习总结杂项
查看>>
ORACLE函数大全
查看>>
【Linux_Fedora_应用系列】_3_如何利用Smplayer播放WMV格式的文件
查看>>
错误3 error C3859: 超过了 PCH 的虚拟内存范围;请使用“-Zm120”
查看>>
树的子结构
查看>>
通过Camera进行拍照
查看>>
hdu1867之KMP
查看>>
Java中System.getProperty()的参数
查看>>
pthread_cond_wait() 函数的使用
查看>>
Crypto API
查看>>
读书笔记2013第10本:《学得少却考得好Learn More Study Less》
查看>>
【c++】指针参数是如何传递内存的
查看>>
装饰模式(Decorator Pattern)--------结构型模式
查看>>
微信公众平台消息接口PHP版
查看>>
[Cocos2d-x For WP8]矩形碰撞检测
查看>>
Java Bad version
查看>>
android的listview组件
查看>>
网页 内部转发和网址输入不同
查看>>