Linux 上 C 语言的原子操作

2024-01-31

我正在尝试将我编写的一些代码从 Mac OS X 移植到 Linux,并且正在努力寻找仅适用于 OSX 的合适替代品OSAtomic.h。我找到了海湾合作委员会__sync*系列,但我不确定它是否与我拥有的旧编译器/内核兼容。我需要代码在 GCC v4.1.2 和内核 2.6.18 上运行。

我需要的具体操作是:

  • 增量
  • 递减
  • 比较和交换

奇怪的是跑步locate stdatomic.h在 Linux 机器上找到头文件(在 c++ 目录中),而在我的 OSX 机器(gcc v4.6.3)上运行相同的命令不会返回任何内容。我必须安装什么才能获取 stdatomic 库,它可以与 gcc v 4.1.2 一起使用吗?

附带说明,我无法使用任何第三方库。


好吧,没有什么可以阻止您使用OSAtomic其他平台的操作。来源为OSAtomicARM、x86 和 PPC 的操作是 Apple 开源 libc 的一部分。只要确保您没有使用OSSpinLock因为这是 Mac OS X 特有的,但这可以很容易地被 Linux futexes 取代。

看看这些:

http://opensource.apple.com/source/Libc/Libc-594.1.4/i386/sys/OSAtomic.s http://opensource.apple.com/source/Libc/Libc-594.1.4/i386/sys/OSAtomic.s http://opensource.apple.com/source/Libc/Libc-594.1.4/ppc/sys/OSAtomic.s http://opensource.apple.com/source/Libc/Libc-594.1.4/ppc/sys/OSAtomic.s http://opensource.apple.com/source/Libc/Libc-594.1.4/arm/sys/OSAtomic.s http://opensource.apple.com/source/Libc/Libc-594.1.4/arm/sys/OSAtomic.s

或者,您可以使用sync_*family,我相信它应该适用于大多数平台,我相信这里有描述:http://gcc.gnu.org/wiki/Atomic http://gcc.gnu.org/wiki/Atomic

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

Linux 上 C 语言的原子操作 的相关文章

  • 代码 GetAsyncKeyState(VK_SHIFT) & 0x8000 中的这些数字是什么?它们是必不可少的吗?

    我试图在按下按键的简单动作中找到这些数字及其含义的任何逻辑解释 GetAsyncKeyState VK SHIFT 0x8000 可以使用哪些其他值来代替0x8000它们与按键有什么关系 GetAsyncKeyState 根据文档返回 如果
  • C++ 是否可以在 MacOS 上与 OpenMP 和 boost 兼容?

    我现在已经尝试了很多事情并得出了一些结论 也许 我监督了一些事情 但似乎我无法完成我想要的事情 问题是 是否有可能使用 OpenMP 和 boost 在 MacOS High Sierra 上编译 C 一些发现 如果我错了请纠正我 Open
  • IdentityServer 4 对它的工作原理感到困惑

    我阅读和观看了很多有关 Identity Server 4 的内容 但我仍然对它有点困惑 因为似乎有很多移动部件 我现在明白这是一个单独的项目 它处理用户身份验证 我仍然不明白的是用户如何注册它 谁存储用户名 密码 我打算进行此设置 Rea
  • 如何填充 ToolStripComboBox?

    我发现它很难将数据绑定到ToolStripComboBox 好像没有这个ValueMember and DisplayMember特性 怎么绑定呢 访问toolstripcombobox中包装的组合框并访问其ValueMember Disp
  • 查看 NuGet 包依赖关系层次结构

    有没有一种方法 文本或图形 来查看 NuGet 包之间的依赖关系层次结构 如果您使用的是新的 csproj 您可以在此处获取所有依赖项 在项目构建后 项目目录 obj project assets json
  • 使用可变参数包类型扩展的 C++ 函数调用者包装器

    我绑定了一些 API 并且绑定了一些函数签名 如下所示 static bool WrapperFunction JSContext cx unsigned argc JS Value vp 我尝试将对象和函数包装在 SpiderMonkey
  • File.AppendText 尝试写入错误的位置

    我有一个 C 控制台应用程序 它作为 Windows 任务计划程序中的计划任务运行 此控制台应用程序写入日志文件 该日志文件在调试模式下运行时会创建并写入应用程序文件夹本身内的文件 但是 当它在任务计划程序中运行时 它会抛出一个错误 指出访
  • 使用 LINQ to SQL 时避免连接超时的最佳实践

    我需要知道在 net 应用程序中使用 LINQ to SQL 时避免连接超时的最佳实践 特别是在返回时IQueryable
  • C# 存档中的文件列表

    我正在创建一个 FileFinder 类 您可以在其中进行如下搜索 var fileFinder new FileFinder new string C MyFolder1 C MyFolder2 new string
  • 如何在 Qt 应用程序中通过终端命令运行分离的应用程序?

    我想使用命令 cd opencv opencv 3 0 0 alpha samples cpp cpp example facedetect lena jpg 在 Qt 应用程序中按钮的 clicked 方法上运行 OpenCV 示例代码
  • 为什么从字典中获取时会得到 Action<> 的克隆?

    我有以下字典 private Dictionary
  • C++ 中的双精度型数字

    尽管内部表示有 17 位 但 IEE754 64 位 浮点应该正确表示 15 位有效数字 有没有办法强制第 16 位和第 17 位为零 Ref http msdn microsoft com en us library system dou
  • WPF DataGridTemplateColumn 组合框更新所有行

    我有这个 XAML 它从 ItemSource 是枚举的组合框中选择一个值 我使用的教程是 http www c sharpcorner com uploadfile dpatra combobox in datagrid in wpf h
  • 使 Guid 属性成为线程安全的

    我的一个类有一个 Guid 类型的属性 该属性可以由多个线程同时读写 我的印象是对 Guid 的读取和写入不是原子的 因此我应该锁定它们 我选择这样做 public Guid TestKey get lock testKeyLock ret
  • Unity:通过拦截将两个接口注册为一个单例

    我有一个实现两个接口的类 我想对该类的方法应用拦截 我正在遵循中的建议Unity 将两个接口注册为一个单例 https stackoverflow com questions 1394650 unity register two inter
  • WebBrowser.Print() 等待完成。 。网

    我在 VB NET 中使用 WebBrowser 控件并调用 Print 方法 我正在使用 PDF 打印机进行打印 当调用 Print 时 它不会立即启动 它会等到完成整个子或块的运行代码 我需要确保我正在打印的文件也完整并继续处理该文件
  • 将数组作为参数传递

    如果我们修改作为方法内参数传递的数组的内容 则修改是在参数的副本而不是原始参数上完成的 因此结果不可见 当我们调用具有引用类型参数的方法时 会发生什么过程 这是我想问的代码示例 using System namespace Value Re
  • GCC 的“-Wl,option”和“-Xlinker option”语法之间有区别吗?

    我一直在查看一些配置文件 并且看到它们都被使用 尽管在不同的体系结构上 如果您在 Linux 机器上使用 GCC 将选项传递给链接器的两种语法之间有区别吗 据我所知 阅读 GCC 手册时 他们的解释几乎相同 From man gcc Xli
  • Linux 中什么处理 ping?

    我想覆盖 更改 linux 处理 ping icmp echo 请求数据包的方式 这意味着我想运行自己的服务器来回复传入的 icmp 回显请求或其他 数据包 但为了使其正常工作 我想我需要禁用 Linux 的默认 ping icmp 数据包
  • OpenCV SIFT 描述符关键点半径

    我正在深入研究OpenCV的SIFT描述符提取的实现 https github com Itseez opencv blob master modules nonfree src sift cpp 我发现了一些令人费解的代码来获取兴趣点邻域

随机推荐

  • 内嵌文本 - 带填充的背景颜色

    我需要制作一个背景颜色不是块的标题 只有文本背景是彩色的 Here is an image of what I have to archieve 这是我到目前为止所得到的 http jsbin com tiwuquze 1 edit htt
  • Textmate 中的自动完成

    有时我会观看有人使用文本伴侣的屏幕截图 我是一名 Rails 开发人员 所以这些是 Rails 屏幕截图 他们会输入如下内容 def 例如 并且 end 会自动出现在下面 我确实启用了 Rails 捆绑包 为什么我没有发生这种情况 Than
  • 使用 R 绘制二次回归线

    我对 R 很陌生 而且对 R 也很陌生plotly 我正在尝试绘制二次 即二次多项式 回归线 一旦一些价格与年份 以及相同的价格与某些整数列表 可以相同 比方说分数 本例中的数据是 price c 995 675 690 600 612 7
  • 如何强制 r optim 运行更多迭代?

    R Optim 比我想要的更早停止迭代 我使用 method L BFGS B 因为我需要不同参数的不同界限 我知道我可以通过 control gt maxit 设置最大迭代次数 但 optim 没有达到最大值 我想 control gt
  • Emacs - Ubuntu 初始化

    在 ubuntu 上加载 emacs 的行为很奇怪 似乎发生了一些初始化 这些初始化不在 emacs 中 也不在 emacs 报告通过 emacs debug init 加载的任何文件中 我发现了一些与字体相关的调整大小的参考 但这种行为似
  • 依赖注入架构设计——服务类循环引用

    我有以下服务类别 public class JobService private UserService us public JobService UserService us this us us public void addJob J
  • Objective C - 访问 zip 中的文件而不解压 zip

    我正在寻找一种访问 zip 文件中的文件而不提取整个文件的方法 我在互联网上找到的所有 zip 解决方案似乎都提取了整个 zip 有谁知道解决方案吗 Google 有一个基于 minizip 的 Objective C 库 http cod
  • 如何从事件中删除所有事件处理程序?

    我有以下课程 Public Class SimpleClass Public Event SimpleEvent Public Sub SimpleMethod RaiseEvent SimpleEvent End Sub End Clas
  • 如何处理 csv 列表中的单词[重复]

    这个问题已经存在了 我遇到了基于以下程序的问题 Code Download the helper library from https www twilio com docs python install import os from tw
  • 如何使用 python 的 cassandra-driver 将地图类型插入 cassandra

    因为 cassandra 支持地图类型 我想将 python 字典插入 cassandra 中 我试过这个 cql Insert into table name my key name my dict values s s s my key
  • 具有水平滚动功能的 SVG

    我正在尝试用 D3 制作 SVG 图表 https cdnjs cloudflare com ajax libs d3 3 5 17 d3 min js https cdnjs cloudflare com ajax libs d3 3 5
  • jQuery 延迟方法和 ajax beforeSend()

    通过使用 ajax 中的延迟对象 成功回调可以替换为deferred method done 错误回调 acn 替换为deferred method fail 完整回调可以替换为always 通过使用 var jqxhr ajax url
  • Android 和 BouncyCastle 的 IllegalAccessError

    我正在尝试实现时间戳请求 如下所示 http bouncy castle 1462172 n4 nabble com Timestamp request and response td1558231 html http bouncy cas
  • Flask 中 AJAX 身份验证的 CSRF 保护

    我想在网站上使用 AJAX 化登录和注册表单 到目前为止 我一直使用 WTForms 主要是为了它内置的 CSRF 保护 但对于这个项目 我觉得不值得 额外的抽象层 因此令人沮丧 对于一些应该漂亮的东西简单的 所以我遇到了这个片段 http
  • 如何参数化 xunit 类装置?

    xUnit 提供了 共享 类装置的概念 如中所述测试之间共享上下文 https xunit net docs shared context 到目前为止我还没有弄清楚是否有一种方法可以对此类装置进行参数化 例如 如果DatabaseFixtu
  • VB.NET:为 IF 条件内的变量赋值?

    是否有可能为 VB NET 中 IF 条件内的变量赋值 像这样的东西 Dim customer As Customer Nothing If IsNothing customer GetCustomer id Then Return Fal
  • XSLT:如何在不按内容排序的情况下反转输出

    我有一个项目清单
  • 如何在 JavaScript 中使用 zindex

    zindex 的语法是什么 我试过这样 document getElementById iframe div1 style zIndex 2000 document getElementById iframe div1 style z in
  • 当滚动条出现时,如何阻止Bootstrap 3.1.1向左移动内容?

    我正在使用 Bootstrap 3 1 1 当我有一个页面由于内容较多而需要垂直滚动条时 Bootstrap 会将 html 正文移动超过 15px 以便为垂直滚动条腾出空间 这对于 Bootstrap 模式来说是一个大问题 但我相信它在
  • Linux 上 C 语言的原子操作

    我正在尝试将我编写的一些代码从 Mac OS X 移植到 Linux 并且正在努力寻找仅适用于 OSX 的合适替代品OSAtomic h 我找到了海湾合作委员会 sync 系列 但我不确定它是否与我拥有的旧编译器 内核兼容 我需要代码在 G