我是否需要在编译时添加 _REENTRANT 宏以使我的 errno 线程安全?

2024-04-29

我是否需要在编译时添加 _REENTRANT 宏以使我的 errno 线程安全?

如果不是,是所有版本的 gcc/linux/solaris 都是这样还是某些旧版本需要?

我最近测试了一段未使用 _REENTRANT 的代码,发现 errno 在多线程环境中以未定义的方式表现?但是,添加 _REENTRANT 后一切正常。环境是Solaris。

但是,讨论here https://stackoverflow.com/questions/1694164/is-errno-thread-safe似乎没有说必须添加_REENTRANT。我有点困惑。

另外,除了 _REENTRANT 之外,我是否应该添加任何其他选项或库以确保我的应用程序具有线程安全的 errno?


在实践中,_REENTRANT当线程被认为是现有实现之上的扩展时,它是遗留垃圾,并且标准库的默认行为不是线程安全的。现代实现不需要它,而且它从来都不是标准的。 (请注意,这也是一个用词不当,因为可重入的 and 线程安全具有完全不同的含义。)

理论上,POSIX 要求您通过以下方式查询和使用以下配置选项getconf如果您正在编译线程程序:

  • POSIX_V7_THREADS_CFLAGS
  • POSIX_V7_THREADS_LDFLAGS

另一方面,gcc 有自己冲突的“可移植”方式来请求线程支持:-pthread选项,通常添加线程工作所需的任何预定义宏和库。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我是否需要在编译时添加 _REENTRANT 宏以使我的 errno 线程安全? 的相关文章

随机推荐

  • 如何从 Matlab 在 vi​​rtualenv 中执行 Python 代码

    我正在创建一个用于研究的 Matlab 工具箱 我需要执行 Matlab 代码 但也需要执行 Python 代码 我想允许用户从 Matlab 执行 Python 代码 问题是 如果我立即执行此操作 我将必须在 Python 环境中安装所有
  • 当出现alertController(actionSheet)时inputAccessoryView动画向下

    我有一个用于聊天应用程序的 inputAccessoryView 它始终保持可见并停靠在屏幕底部 用于类似于大多数消息应用程序的文本输入 当我呈现带有actionSheet样式的alertController时 inputAccessory
  • Flutter StatefulWidget 小部件和泛型

    如何将泛型类型传递给State of a StatefulWidget 在这里我想使用我的泛型myMethod
  • 如何在 Android 中使用 kSOAP 序列化双精度值

    这是代码 package com SRS6 import org ksoap2 SoapEnvelope import org ksoap2 serialization SoapObject import org ksoap2 serial
  • 小数点分隔符 oracle

    我需要用点替换逗号 然后我需要我的值是一个数字 所以我写了这个 select replace 12345 6789 from dual it works fine 但后来我想转换to number该值 我收到错误 invalid numbe
  • PostGIS - 将多多边形转换为单多边形

    是否可以将包含多个多边形的形状文件导入到 PostGIS 中的单个多边形中 每当我尝试导入多边形的形状文件时 它都会作为多多边形 而不是单个多边形 存储在geom柱子 因此 我无法从多重多边形中将其提取为单个多边形值 非常感谢所有有用的建议
  • 使用 jQuery 更改 Bootstrap 动画进度条动画持续时间

    我正在尝试更改 Twitter Bootstrap 动画进度条上使用的 CSS3 动画的持续时间 我想要的结果是使用 jQuery 减少动画的持续时间 以便获得更快的动画 我有以下 HTML 和 CSS 并使用了以下 jQuery HTML
  • Julia 中过时的软件包列表

    有没有办法列出 Julia 中所有过时的软件包 相当于pip3 list outdated在Python中 我做了几次搜索 1 https docs julialang org en v1 stdlib Pkg 2 https pkgdoc
  • 如何使用pytorch构建多任务DNN,例如超过100个任务?

    下面是使用 pytorch 为两个回归任务构建 DNN 的示例代码 这forward函数返回两个输出 x1 x2 用于大量回归 分类任务的网络怎么样 例如 100 或 1000 个输出 对所有输出 例如 x1 x2 x100 进行硬编码绝对
  • python string format() 与带有整数键的字典[重复]

    这个问题在这里已经有答案了 我想使用Python字符串format 充当快速而肮脏的模板 但是 那dict我想使用的键是整数 字符串表示形式 一个简化的例子如下 s hello there 5 d 5 you s format d 上面的代
  • 在 iOS 中保存加密密钥的安全方法

    在我的 iOS4 应用程序中 我在多个地方使用 AES 加密 整个应用程序必须非常安全 为了做到这一点 我必须在这个应用程序中硬编码几个密钥 然后当我需要加密某些东西时随机选择这些密钥 我的问题是如何存储这些私钥 使用硬编码它们是否安全NS
  • 如何对 numpy 数组进行采样并有效地对每个样本执行计算?

    假设我有一个一维数组 我想要的是使用移动窗口进行采样 并在窗口内将每个元素除以第一个元素 例如 如果我有 2 5 8 9 6 窗口大小为 3 结果将是 1 2 5 4 1 1 6 1 8 1 1 125 0 75 我现在所做的基本上是一个f
  • Android 中 Fragment 中的布局未浮动在键盘上方

    我有一个布局 其中有两个编辑文本和水平滚动条 片段中带有一些图标 使用相对布局约束 水平滚动视图永久固定到父级的底部 单击编辑时 默认情况下会出现软键盘 当发生这种情况时 我需要水平滚动视图浮动在软键盘上方 以便每个人都可以使用它 我已将以
  • 边界椭圆约束于水平/垂直轴

    背景 我正在尝试将地形图裁剪成围绕多个风力涡轮机的最小尺寸椭圆 以最小化地图的尺寸 执行此地图裁剪的程序可以裁剪椭圆 但仅限轴沿 x 轴和 y 轴对齐的椭圆 我知道边界椭圆问题的算法 https stackoverflow com ques
  • 如何在 DatePicker 上使用 Interactivity:Interaction.Triggers

    我正在尝试将 SelectedDateChanged 绑定到命令 以便我可以将其放置在我的 ViewModel 中 但无论如何它都不会接受此代码 http pastebin com T4q8hQBA http pastebin com T4
  • 奇怪的 UIView 坐标问题

    我正在编写一个通用应用程序 因此 我进行了设置 以便我的 XIB NIB 不是使用视图控制器创建的 而是单独创建的 然后通过将 XIB 上的类名设置为相应视图控制器的类名来链接到视图控制器 并且将文件所有者的视图链接到 XIB 上的视图 然
  • 自动旋转、UIWebView 和 UITabBarController

    我有以下视图层次结构 UITabBarController UINavigationController UIViewController only supports Portrait rotation UINavigationContro
  • 无法将“记住”内联方法调用到 @androidx.compose.runtime.Composable

    我有一个大项目 我决定向其中添加 jetpack compose 首先 我准备了一个独立的项目 其中包含一些 Composable组件 一切正常 然后 在编译期间向我的项目添加源和 preper 依赖项后 我开始收到此错误 org jetb
  • Java 数组中的最小值和最大值

    我的代码没有给出错误 但它没有显示最小值和最大值 代码是 Scanner input new Scanner System in int array new int 10 System out println Enter the numbe
  • 我是否需要在编译时添加 _REENTRANT 宏以使我的 errno 线程安全?

    我是否需要在编译时添加 REENTRANT 宏以使我的 errno 线程安全 如果不是 是所有版本的 gcc linux solaris 都是这样还是某些旧版本需要 我最近测试了一段未使用 REENTRANT 的代码 发现 errno 在多