Предоставляет ли доступный компилятор реализацию ключевого слова _Atomic C11 и связанного с ним заголовка stdatomic.h? - PullRequest
4 голосов
/ 05 января 2012

Я знаю, что стандарту C11 всего месяц, но черновики для _Atomic намного старше. Я также знаю, что компилятор GCC прилагает серьезные усилия для реализации таких функций до официального утверждения стандарта. но даже там поддержка еще не готова к прайм-тайм.

Однако меня могут заинтересовать и другие компиляторы: Visual Studio или встроенные компиляторы cq. сред. Кто-нибудь из провайдеров компиляторов готов предоставить такую ​​поддержку? Любые ссылки приветствуются.

Я спрашиваю, потому что я работаю в разработке автомобильных встраиваемых систем, и мне интересно, должен ли я сам двигаться в этом направлении. До сих пор большинство сред (таких как поддержка AutoSAR или Vector OS) предлагали собственные решения, для которых новый стандарт теперь предоставляет определенный синтаксис и семантику, и пока авторы компиляторов не двигаются в направлении C11, это будет оставайся единственным реальным решением.

Ответы [ 3 ]

3 голосов
/ 05 января 2012

Я думаю, что поддержка самого ключевого слова займет некоторое время, я еще ничего не видел.Что касается поддержки библиотеки (функции поддержки), то здесь уже многое другое.В частности, я знаю о gcc, который реализует универсальные функции для атомарных операций __sync_... на целочисленных типах для большинства платформ.

В настоящее время я работаю над уровнем соответствия для P99 для C11.Часть потока (поверх потоков POSIX) уже существует, атомика (с использованием примитивов gcc) скоро будет завершена.Это будет общая реализация, поддерживающая атомарность для всех базовых типов через макросы, которые реализуют универсальные функции типа *1007* atomic_..., которые предусмотрены в стандарте.

Это почти там, вы можете просмотретьпервая версия на сайте P99, но мне все еще понадобится несколько дней, чтобы закончить ее.

2 голосов
/ 13 февраля 2012

FreeBSD HEAD включает в себя несколько портативную версию: http://svnweb.freebsd.org/base/head/include/stdatomic.h?view=markup

Он поддерживает три различных типа компиляторов:

  • Атомные встроенные функции Clang 3.1 (еще не выпущены)
  • Атомные свойства GCC 4.7 (еще не выпущены)
  • __sync интерфейс GCC
0 голосов
/ 16 апреля 2012

Pelles C версии 7.00 (Release Candidate) поддерживает их.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...