【转载】-D_REENTRANT编译选项

【KDD2024】ShapeFormer:用于多元时间序列分类的Shapelet Transformer 多元时间序列分类(MTSC)因其在现实世界中的广泛应用而吸引了大量研究关注。最近,Transformer在MTSC中取得了先进的性能。然而, 阅读详情

转载出处:

http://blog.sina.com.cn/s/blog_8eda9f3501012boq.html

-D_REENTRANT宏作用
   _REENTRANT宏
在一个多线程程序里,默认情况下,只有一个errno变量供所有的

线程共享。假设在一个线程准备获取刚才的错误代码时,该变量很容易被另

外一个线程中的函数调用所改变。类似的问题还存在于fputs之类的函数中

,这些函数通常用一个单独的全局性区域来缓存输出数据。
为了解决这个问题,需要使用可重入的程序。可重入代码可以被多

次调用而仍然工作正常。编写的多线程程序,通过定义宏_REENTRANT来告诉

编译器我们需要可重入功能,这个宏的定义必须出现于程序中的任何

#include语句之前。
_REENTRANT为我们做了三件事情,并且做得非常优雅:
1)对部分函数重新定义它们的可安全重入的版本,这些函数名字

一般不会发生改变,只是会在函数名后面添加_r字符串,如函数名

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

数。
3)在error.h中定义的变量errno现在将成为一个函数调用,它能

够以一种安全的多线程方式来获取真正的errno的值。


保姆级教程:用STM32F103C8T6和MAX6675搞定K型热电偶测温(附模拟/硬件SPI双版本代码) 本文提供STM32F103C8T6与MAX6675实现K型热电偶高精度测温的保姆级教程,涵盖硬件连接、SPI驱动实现及模拟SPI方案,并附双版本代码。详细解析温度数据读取、处理及常见问题排查,助力工业控制、实验室设备等场景的稳定测温系统搭建。 阅读详情

相关推荐

避坑指南:CentOS7.9安装Python3.8.16后yum报错的快速修复方法

本文详细解析了在CentOS7.9系统安装Python3.8.16后导致yum报错的原因,并提供了快速修复方法。通过修改yum配置文件指向Python2解释器,以及使用alternatives工具管理多版本Python,有效解决兼容性问题。同时推荐使用虚拟环境隔离开发环境,避免影响系统稳定性。

weixin_26908317的博客 362

gcc -D_REENTRANT

前者告诉链接器链接库文件libpthread.so,对于后者,gcc使用-D选项定义宏。选项,它可以设置支持多线程的所有链接器和编译器选项,在linux x86上,它与。的值为1,在 _POSIX_C_SOURCE宏被定义为199506L时该宏与。两者一起使用时作用相同,在其他平台则不一定。在使用多线程函数时,我们经常使用编译器选项

tus00000的博客 1185

别再手动跑定时任务了!Spring Boot项目5分钟集成xxl-job保姆级教程(含Docker部署调度中心)

本文提供Spring Boot项目快速集成xxl-job的保姆级教程,包括Docker部署调度中心的详细步骤。通过实战案例展示如何构建企业级分布式任务调度系统,解决传统定时任务的资源竞争、单点故障等问题,提升开发效率与系统可靠性。

weixin_30315905的博客 274

Linux下_多线程

条件的检测是在互斥锁的保护下进行的。如果另一个线程改变了条件,它发信号给关联的条件变量,唤醒一个或多个等待它的线程,重新获得互斥锁,重新评价条件。家庭内的各成员同时做各自的事情(父亲工作、母亲持家、小孩上学)而对于家庭外部的人来说,这个家庭同时在做多件事情,家庭内的每个成员,就是一个线程。多个进程间不会直接共享内存线程是进程的基本执行单元,一个进程的所有任务都在线程中执行,进程要想执行任务,必须得有线程,进程至少要有一条线程,程序启动会默认开启一条线程,这条线程被称为主线程或 UI 线程。

Liangheng_梁衡的博客 559

-D_REENTRANT机制

可重入: lfl@ubuntu:/usr/include$ vi errno.h 重点看该文件中下面的内容 /* Declare the `errno' variable, unless it's defined as a macro by    bits/errno.h.  This is the case in GNU, where it is a per-thread    var

嵌入式学习交流平台 3939

-D_REENTRANT 宏作用

2._REENTRANT宏 在一个多线程程序里,默认情况下,只有一个errno变量供所有的线程共享。在一个线程准备获取刚才的错误代码时,该变量很容易被另一个线程中的函数调用所改变。类似的问题还存在于fputs之类的函数中,这些函数通常用一个单独的全局性区域来缓存输出数据。 为解决这个问题,需要使用可重入的例程。可重入代码可以被多次调用而仍然工作正常。编写的多线程程序,通过定义宏_REENTRA...

weixin_33924770的博客 353

Linux如何定义宏 REENTRANT,linux – 我需要-D_REENTRANT-pthreads吗?

在Linux(内核2.6.5)上,我们的构建系统使用-D_REENTRANT调用gcc.使用pthreads时仍然需要这个吗?它与gcc -pthread选项有什么关系?我知道我应该使用-pthread和pthreads,我还需要-D_REENTRANT吗?另外,在gcc 3.3.3和gcc 4.x.x之间使用REENTRANT之间是否存在任何差异?当我使用-pthread gcc选项时,我可以看...

weixin_42514288的博客 256

gcc的-D和-U参数:宏的设置与取消 _CCFLAGS=" -w -enable-threads=posix -DLINUX -D_REENTRANT -DWORKONGN -Dl...

_CCFLAGS=" -w -enable-threads=posix -DLINUX -D_REENTRANT -DWORKONGN -Dlinux -D_GN_DETAIL_SDR_" 开始看不懂,闹了半天就是个宏!! 下面附带看过的参考资料: gcc的-D和-U参数:宏的设置与取消2006-10-08 22:59:06 分类:LINUX ...

weixin_30498921的博客 276

转载_gcc -lpthread和gcc -pthread的区别

用gcc编译使用了POSIX thread的程序时通常需要加额外的选项,以便使用thread-safe的库及头文件,一些老的书里说直接增加链接选项 -lpthread 就可以了,像这样: Shell代码   gcc -c x.c   gcc x.o -ox -lpthread    而gcc手册里则指出应该在编译和链接时都增加 -pthread 选项,像这样:

williamwanglei的专栏 769

QT工程文件的条件编译选择与额外的编译参数配置

QTCreator打开.pro工程文件后,依据不同的构建套件创建项目组。在项目组中,点开构建步骤的“详情”,增加一个自己的宏定义,比如: DEFINES+=IMX_287 然后,我们在.pro文件中添加: contains(DEFINES,IMX_287){ # contains 'Embedded Linux' message( "Configuring for Emb...

weixin_30367169的博客 142

gcc -lpthread

转自:http://www.cnblogs.com/suntp/p/6473751.html 如果用gcc编译使用了POSIX thread的程序时,通常需要加额外的选项,以便使用thread-safe的库及头文件,一些老的书里说直接增加链接选项 -lpthread 就可以了。 而gcc手册里则指出应该在编译和链接时都增加 -pthread 选项编译选项中指定 -pthread...

dongbi0665的博客 768

Makefile 编译生成多个可执行文件

CC = gcc CXX = g++ CFLAGS = -O -DDBG -D_REENTRANT -Wall -DUSE_PTHREAD -pthread LDFLAGS = -ldl -lnsl -lm -lpthread #wildcard 对 c文件进行展开 SRCS = $(wildcard *.c) $(wildcard *.cpp) #去除路径信息 dir=$...

weixin_30853329的博客 683

-lpthread和-pthread的区别

编译程序包括 预编译编译,汇编,链接,包含头文件了,仅能说明有了线程函数的声明, 但是还没有实现, 加上-lpthread是在链接阶段,链接这个库。<stdio.h>等都是静态库,不需要做额外的表示,连接时会直接链接进代码里。pthread是动态库,需要用-lpthread,所有的动态库都需要用-lxxx来引用 用gcc编译使用了POSIX thread的程序时通常需要加额外的选...

weixin_30617695的博客 306

pkg-config命令的Makefile.am

举例:通过Makefile调用pkg-config命令。 pkg-config - Return metainformation about installed libraries (为了使用lib库,通过pkg-config生成必要的编译options) Makefile中的例: CFLAGS = `pkg-config --cflags gtk+-2.0` ...

weixin_30318645的博客 389

查看openssl的版本

[root@ha01 tengine]# openssl version -a OpenSSL 1.0.1e-fips 11 Feb 2013 built on: Thu Jul 23 19:06:35 UTC 2015 platform: linux-x86_64 options: bn(64,64) md2(int) rc4(16x,int) des(idx,cisc,16...

weixin_30412167的博客 899

脏牛提权CVE-2016-5195

gcc -pthread dirtyc0w.c -o dirtyc0w 尝试使用gcc -pthread dirtyc0w.c -o dirtyc0w编译该POC文件 gcc命令是一个编译器套件,可用于编译多种语言源码。 可见编译选项中指定-pthread会附加一个宏定义-D_REENTRANT,该宏会导致libc头文件选择那些thread-safe的实现。-o参数为...

weixin_30902675的博客 358

OS:(Linux)多线程实现生产者-消费者问题--pthread库

OS实验——多线程实现生产者-消费者问题时,正确输入代码生成文件pthread.c,在终端运行: gcc编译:输入gcc -o pthread pthread.c 无法成功编译,错误提示如下: CSDN查找解决方案后,发现pthread库并不是Linux系统默认的库,链接时需要使用库libpthread.a,所以使用pthread库中的pthread_creat创建线程时,编译中要...

weixin_30786657的博客 467

makefile 示例

CP = /bin/cp -rf RM = /bin/rm -rf CC = gcc -m32 #CFLAGS = -g -Wall -D_REENTRANT -DHaveSNMP...

weixin_34380948的博客 118

一个makefile调用多个makefile 文件示例

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34148508的博客 274

linux下 java JNI调用C语言动态链接库(非常使用!!非常经典!!)

comes from: http://watershitter.iteye.com/blog/477615 1 java 中 c语言函数的声明      public native static void greeting(); //就像是接口声明一样,不过有nati

alfredtofu的专栏 6134

KB2990941和KB3087873

WIN7驱动补丁

Python数据分析教程的资料.zip

Python数据分析教程的资料.zip

下一篇: 套接字地址结构
wind_whisper
博客等级 码龄15年 2粉丝 1原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值