加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

Linux上的C中的原子操作

发布时间:2020-12-13 19:08:17 所属栏目:Linux 来源:网络整理
导读:我试图将我从Mac OS X编写的一些代码移植到Linux上,并且很难找到适合OSX的OSAtomic.h的替代品.我找到了gcc __sync *系列,但我不确定它是否与我的旧编译器/内核兼容.我需要在GCC v4.1.2和内核2.6.18上运行代码. 我需要的具体操作是: 增量 减少 比较和交换 奇

我试图将我从Mac OS X编写的一些代码移植到Linux上,并且很难找到适合OSX的OSAtomic.h的替代品.我找到了gcc __sync *系列,但我不确定它是否与我的旧编译器/内核兼容.我需要在GCC v4.1.2和内核2.6.18上运行代码.

我需要的具体操作是:

>增量
>减少
>比较和交换

奇怪的是,在linux机器上运行locate stdatomic.h会找到头文件(在c目录中),而在我的OSX机器上运行相同的命令(gcc v4.6.3)则不会返回任何内容.我需要安装什么来获取stdatomic库,它是否适用于gcc v 4.1.2?

作为旁注,我不能使用任何第三方库.

最佳答案
好吧,没有什么可以阻止你在其他平台上使用OSAtomic操作. ARM,x86和PPC的OSAtomic操作源是Apple的libc的一部分,它是opensource.请确保您没有使用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/ppc/sys/OSAtomic.s
?http://opensource.apple.com/source/Libc/Libc-594.1.4/arm/sys/OSAtomic.s

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读