【linux/makefile】-D_REENTRANT编译选项的作用
Date: 2018.11.14
参考自:https://blog.csdn.net/wangzhen209/article/details/47152501
https://blog.csdn.net/uestczshen/article/details/53240650
-D_REENTRANT宏作用
_REENTRANT宏
在一个多线程程序里,默认情况下,只有一个errno变量供所有的线程共享。假设在一个线程准备获取刚才的错误代码时,该变量很容易被另外一个线程中的函数调用所改变。类似的问题还存在于fputs之类的函数中,这些函数通常用一个单独的全局性区域来缓存输出数据。
为了解决这个问题,需要使用可重入的程序。可重入代码可以被多次调用而仍然工作正常。编写的多线程程序,通过定义宏_REENTRANT来告诉编译器我们需要可重入功能,这个宏的定义必须出现于程序中的任何#include语句之前。
_REENTRANT为我们做了三件事情,并且做得非常优雅:
1)对部分函数重新定义它们的可安全重入的版本,这些函数名字一般不会发生改变,只是会在函数名后面添加_r字符串,如函数名gethostbyname变成gethostbyname_r。
2)stdio.h中原来以宏的形式实现的一些函数将变成可安全重入函数。
3)在error.h中定义的变量errno现在将成为一个函数调用,它能够以一种安全的多线程方式来获取真正的errno的值。
THE END!
【linux/makefile】-D_REENTRANT编译选项的作用相关推荐
- 【Linux + Makefile】Makefile中的.PHONY作用以及赋值运算(各种=符号)的区别
笔者常年在Linux环境编程,经常在项目中与Makefile打交道,最近总结了几个Makefile的小的知识点,分享给大家. 通过阅读本文,你将了解到以下知识: 1.Makefilke中的.PHONY ...
- 很详细、很移动的Linux makefile教程:介绍,总述,书写规则,书写命令,使用变量,使用条件推断,使用函数,Make 的运行,隐含规则 使用make更新函数库文件 后序...
很详细.很移动的Linux makefile 教程 内容如下: Makefile 介绍 Makefile 总述 书写规则 书写命令 使用变量 使用条件推断 使用函数 make 的运行 隐含规则 使用m ...
- 【Linux + Makefile】十分钟教你学会Makefile的FORCE
相信大家在使用Linux环境编程的时候,一定接触过Makefile这个玩意.Makefile在搭建自定义的编译环境,尤其是自动化编译.多功能一键编译等功能上,还是发挥了很大的作用.如果接触过Linux ...
- Linux系统主要目录及作用
Linux系统主要目录及作用 /bin 一些基础命令 /etc 系统或软件的配置文件 /boost 内核相关和启动相关的文件 /dev 存放着各种设备文件 /home 用户相关的目录 ...
- Linux 下各个目录的作用及内容
Linux 下各个目录的作用及内容 在 Linux 下,我们看到的是文件夹(目录): 在早期的 UNIX 系统中,各个厂家各自定义了自己的 UNIX 系统文件目录,比较混乱.Linux 面世不久后,对 ...
- linux makefile 只能使用Tab键进行文本缩进
在编写完linux Makefile后,在控制台输入make命令编译文件时报错,错误信息:"Makefile:13:*** 遗漏分隔符".查看Makefile文件内容,没有发现问题 ...
- linux系统/var目录的作用
linux系统/var目录的作用 一.总结 一句话总结: 1.如果/usr是安装时会占用较大硬盘容量目录,那么/var就是在系统运行后才会渐渐占用硬盘容量的目录. 2.因为var目录主要针对常态性变动 ...
- Linux /dev目录详解和Linux系统各个目录的作用
Linux /dev目录详解和Linux系统各个目录的作用 标签: linuxtcpfunctionclassfirefoxtimer 2012-01-11 23:08 45517人阅读 评论(2) ...
- linux各文件夹的作用
linux各文件夹的作用 linux下的文件结构,看看每个文件夹都是干吗用的 /bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 ...
最新文章
- AI 不可以作为专利认证发明人,“因为它不是人”
- QIIME 2教程. 31名词Glossary(2021.2)
- mysql的proxy机制_MySQL Proxy工作机制浅析
- nginx-lua-openresty-graphicsmagick 下载远程图片,本地缩图红缓存加水印
- 微信生成带参数的二维码,合成海报,扫码后推送小程序?
- Apache Kylin权威指南1.3 Apache Kylin的工作原理
- java事件大全_Java sctipt常用事件汇总介绍
- lambda表达式对list排序
- 在武汉火车站转车需要出现吗_武汉打造40分钟“高铁中转站” 无需出站可换乘...
- 从零点亮一个led灯
- 重定向解决国外服务器与国内域名备案的问题
- 西门子——好用的通讯仿真通讯工具NetToPLCsim
- [32期] 想学PHP来兄弟连是正确的选择 初识兄弟连三周
- 【php】php开发的前期准备
- 反骨之Java是如何解决并发中的可见性问题的
- 《我想进大厂》之kafka夺命连环11问
- Dubbo Admin部署(Dubbo 2.7.X)
- 2ASK和2FSK调制解调仿真
- Three.js加载.stl格式模型
- c语言中 判断素数的编程,c语言如何判断素数?
热门文章
- 【文本分类】ACT: an Attentive Convolutional Transformer for Efficient Text Classification
- node开通阿里云短信验证服务,代码演示 超级详细
- 【Python】ValueError:Sample larger than population or is negative的原因
- 华为交换机dhcp功能怎么配置
- 机器人扫地机哪个牌子好?
- 天正启动时加载那些lisp_怎么在启动CAD时自动加载Lisp的工具及插件
- java 字符串 压缩_用JAVA实现字符串压缩算法
- word 如何任意调整图片的大小
- oracle hit ratio负数,5.Library Hit %
- Matlab强化学习——部署策略