gpt4 book ai didi

c - Linux 上 C 语言的原子操作

转载 作者:IT王子 更新时间:2023-10-29 01:04:50 27 4
gpt4 key购买 nike

我正在尝试将我从 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 的一部分。只需确保您没有使用 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

关于c - Linux 上 C 语言的原子操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12083694/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com