首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Linux上执行x86,arm,GCC和icc上的原子操作?

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

Stack Overflow用户
提问于 2018-03-15 06:56:25
回答 2查看 0关注 0票数 0

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

  • 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>不应该用于用户空间,我没有成功地使用它。另外,我不确定它是否适用于英特尔编译器。
EN

回答 2

Stack Overflow用户

发布于 2018-03-15 15:22:41

项目正在使用这个:

http://packages.debian.org/source/sid/libatomic-ops

如果你想要简单的操作,例如CAS,你不能只使用内核中特定于arch的实现,并且使用autotools / cmake在用户空间中进行arch检查。

票数 0
EN

Stack Overflow用户

发布于 2018-03-15 16:11:07

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

  • C11: stdatomic.h
  • C ++ 11: std::atomic
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100004263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档