如何在Linux上执行x86,arm,GCC和icc上的原子操作?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (109)

每个现代操作系统都提供了一些原子操作

  • Windows具有Interlocked*API
  • FreeBSD有 <machine/atomic.h>
  • Solaris有 <atomic.h>
  • Mac OS X有 <libkern/OSAtomic.h>

任何类似于Linux的东西?

  • 我需要它在大多数Linux支持的平台上工作,包括:x86,x86_64和 arm
  • 我需要它至少在GCC和Intel编译器上工作。
  • 我不需要使用像glib或qt这样的第三方库。
  • 我需要它在C ++中工作(C不需要)

问题:

  • GCC原子内建函数__sync_*在所有平台(ARM)上都不受支持,并且不受英特尔编译器支持。
  • AFAIK <asm/atomic.h>不应该用于用户空间,我没有成功地使用它。另外,我不确定它是否适用于英特尔编译器。
提问于
用户回答回答于
用户回答回答于

C&C ++的最新标准(2011年起)指定了原子操作:

  • C11: stdatomic.h
  • C ++ 11: std::atomic

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动