可用的编译器是否提供C11'_Atomic'关键字及其相关标题'stdatomic.h'的实现?

时间:2012-01-05 10:54:52

标签: c atomic language-lawyer c11

我知道C11标准只有一个月的历史,但_Atomic的草稿要早得多。我也知道GCC编译器在标准获得正式批准之前会认真努力实现这些功能。但即使是there,支持还没有为黄金时段做好准备。

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

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

3 个答案:

答案 0 :(得分:3)

我认为对关键字本身的支持需要一些时间,我还没有看到。对于图书馆支持(支持功能)而言,已有更多。特别是我知道gcc在大多数平台上对整数类型实现原子操作__sync_...的泛型函数。

我目前正致力于C11的P99合规层。线程部分(在POSIX线程之上)已经存在,原子(使用gcc原语)很快就会完成。这将是一个通用实现,通过宏实现所有基类型的原子,实现标准中预见的type generic atomic_...函数。

几乎就在那里,您可以在P99网站上查看第一个版本,但我仍需要几天才能完成它。

答案 1 :(得分:2)

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

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

  • Clang 3.1的原子内在函数(尚未发布)
  • GCC 4.7的原子内在函数(尚未发布)
  • GCC的__sync接口

答案 2 :(得分:0)

Pelles C版本7.00(候选版本)支持它们。

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