-D_REENTRANT 宏作用

转载 2013年12月02日 18:26:07

2._REENTRANT宏

在一个多线程程序里,默认情况下,只有一个errno变量供所有的线程共享。在一个线程准备获取刚才的错误代码时,该变量很容易被另一个线程中的函数调用所改变。类似的问题还存在于fputs之类的函数中,这些函数通常用一个单独的全局性区域来缓存输出数据。

为解决这个问题,需要使用可重入的例程。可重入代码可以被多次调用而仍然工作正常。编写的多线程程序,通过定义宏_REENTRANT来告诉编译器我们需要可重入功能,这个宏的定义必须出现于程序中的任何#include语句之前。

_REENTRANT为我们做三件事情,并且做的非常优雅:

(1)它会对部分函数重新定义它们的可安全重入的版本,这些函数名字一般不会发生改变,只是会在函数名后面添加_r字符串,如函数名gethostbyname变成gethostbyname_r。

(2)stdio.h中原来以宏的形式实现的一些函数将变成可安全重入函数。

(3)在error.h中定义的变量error现在将成为一个函数调用,它能够以一种安全的多线程方式来获取真正的errno的值。

 

参考:

Linux多线程编程小结

http://blog.csdn.net/MONKEY_D_MENG/article/details/5628663

相关文章推荐

Cocos2d-x 一些常见宏的作用

2.常见宏    1)NS_CC_BEGIN cocos2d命名空间开始    2) NS_CC_END  cocos2d命名空间结束    3)USING_NS_CC 声明cocos...

Reentrant vs Thread-safe

Reentrant vs Thread-safe a whole copy of MagicJackTing's blog. thanks ot his sharing. Reentrancy 和...
  • flxue
  • flxue
  • 2016-06-29 11:40
  • 246

synchornized reentrant lock

synchornized reentrant lock

thread safe vs reentrant

Reentrant is an adjective that describes a computer program or routine that is written so that the...

reentrant函数与thread safe函数浅析

reentrant函数与thread safe函数浅析 http://www.chinaunix.net 作者:ypxing 发表于:2008-02-23 19:46:50 ...

curator 锁之 Shared Reentrant Lock

1、描述 共享锁:全局同步分布式锁,同一时间两台机器只能有一台获得锁 2、参与类 InterProcessMutex 3、用法 3.1 创建 InterProcessMute...

C\D\E\F盘的作用

1、C盘(系统区)  C盘原则上只装一个操作系统,如果是WINXP,5-6GB较为适当;WIN2000的话,3-4G较为适宜;WIN98的话,2G就足够了;很多人在用了电脑很长一段时间后却发现其他的...

Unity3D中Camera类的eventMask属性作用解析

2.1.4 eventMask属性:按层响应事件 基本语法:public inteventMask { get; set; } 功能说明:此属性的功能是用来选择哪个层(layer)的物体可以响应鼠...

Unity3d中特殊文件夹以及作用详解

1.Editor Editor文件夹可以在根目录下,也可以在子目录里,只要名子叫Editor就可以。比如目录:/xxx/xxx/Editor  和 /Editor 是一样的,无论多少个叫Editor...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)