4

我知道 C11 标准只有一个月的时间,但草稿_Atomic要旧得多。我也知道 GCC 编译器会在标准正式批准之前努力实现这些功能。但即使在那里,支持还没有准备好迎接黄金时段。

但是,我也会对其他编译器感兴趣:Visual Studio 或嵌入式编译器 cq。环境。是否有任何编译器提供商准备提供此类支持?欢迎任何链接。

我在问,因为我从事汽车嵌入式开发,我想知道我是否应该自己朝那个方向发展。到目前为止,大多数环境(如 AutoSAR 或 Vector OS 支持)一直在提供本土解决方案,新标准现在为其提供了特定的语法和语义,只要编译器作者不朝着 C11 的方向发展,这将仍然是唯一真正的解决方案。

4

3 回答 3

3

我认为对关键字本身的支持需要一些时间,我还没有看到一些东西。对于库支持(支持功能)的关注已经有更多了。特别是我知道 gcc__sync_...为大多数平台的整数类型实现原子操作的通用函数。

我目前正在为 C11开发P99的合规层。线程部分(在 POSIX 线程之上)已经存在,原子(使用 gcc 原语)即将完成。这将是一个通用实现,通过实现标准中预见的类型通用 atomic_...函数的宏来支持所有基本类型的原子。

快到了,您可以在 P99 网站上查看第一个版本,但我还需要几天时间才能完成它。

于 2012-01-05T11:09:18.117 回答
2

FreeBSD HEAD 包含一个可移植的版本:http ://svnweb.freebsd.org/base/head/include/stdatomic.h?view=markup

它支持三种不同类型的编译器:

  • Clang 3.1 的原子内在函数(尚未发布)
  • GCC 4.7 的原子内在函数(尚未发布)
  • GCC 的 __sync 接口
于 2012-02-13T09:33:21.930 回答
0

Pelles C 版本 7.00 (Release Candidate) 支持它们。

http://www.smorgasbordet.com/pellesc/

于 2012-04-16T07:20:27.410 回答