Любая библиотека C реализует потоки C11 для GNU/Linux?

Были проблемы с много вопросов о потоках C11 и C11, но я не вижу окончательного ответа в любом месте:

. Любая библиотека C реализует интерфейс потоков C11, который можно использовать в GNU/Linux-подобном?, например, предоставить "необязательный" <threads.h> и библиотека поддержки потоков, например thrd_create(), стандарт C11 рядом с p. 376.

В идеале я хотел бы найти библиотеку, которая является общепринятой, открытой или бесплатной, для общей/общей/мульти-архитектуры (например, GNU/Linux, x86_64 или portable-ish).

Несколько полезных и релевантных ссылок SO:

  • этот и этот на glibc;
  • этот, говорящий о стандарте;
  • этот о clang;
  • этот о C11 вообще и этот о Windows и других платформах;
  • гораздо больше о потоке С++ 11, но меня интересует только C11.

Некоторые параметры, не связанные с стартом для библиотек:

  • glibc библиотека не; с 2012 года существует ошибка открытия; было предложение GSoC, но кажется не принято;
  • Проект LLVM/Clang не имеет библиотеки C;
  • musl библиотека не; - теперь делает! См. Править ниже и answer.
  • Newlib библиотека поддерживает потоки (docs), но не используя pthread и нити C11;
  • uClibc не:
  • это сравнение, что является сомнительным (например, я не вижу никаких доказательств в мультовых источниках для поддержки потоковой поддержки потоков C11);
  • Некоторые сообщения о BSD,
  • Pelles, который выглядит закрытым и только для Windows.

Я заинтересован не в потоках POSIX (много прекрасных опций), Windows, IDE и С++ 11 (я знаю, что GNU libstdc++ и LLVM/Clang libc++ предоставляют С++ 11 std::thread, который использует -pthread)

Спасибо!


(повторно) Изменить: вопрос повторно открыт, поэтому перенесенный контент для ответа для очистки.

Ответ 1

musl теперь (начиная с сентября 2014 года) реализует потоки C11!

В соответствии с это последнее сообщение о переписке мульфильмов и другой разговор на который список в июле-сентябре 2014 г., похоже, что библиотека musl теперь (по состоянию на 2014-09-07) реализует C11, хотя сравнительная таблица; не относится к этому письму, отражая это.

Поскольку этот вопрос снова открыт, я переместил это содержимое на правильный ответ.

Ответ 2

https://github.com/jtsiomb/c11threads - это "тривиальная реализация потоков C11 по потокам POSIX". содержащихся в одном заголовке.

Ответ 3

Хммм, похоже, что GCC 4.9.0 фактически обеспечивает существенную поддержку стандартов C11 (по крайней мере, так как веб-документы были изменены примерно в конце июня 2014 года.

Из https://gcc.gnu.org/onlinedocs/gcc-4.9.0/gcc/Standards.html

Четвертая версия стандарта C, известная как C11, была опубликована в 2011 как ISO/IEC 9899: 2011. GCC имеет практически полную поддержку этот стандарт, включенный с -std = c11 или -std = iso9899: 2011. (Пока в разработка, черновики этой стандартной версии назывались C1X.)

И из https://gcc.gnu.org/gcc-4.9/changes.html

ИСО C11 атомистика (спецификатор _Atomic и спецификатор и  заголовок). Стандартные варианты ISO C11 (Ключевое слово _Generic) теперь поддерживаются. Потоковое хранилище ISO C11 (_Thread_local, аналогично GNU C __thread) теперь поддерживается. ISO C11 поддержка теперь находится на том же уровне полноты, что и поддержка ISO C99: по существу, по модулю ошибок, расширенные идентификаторы (поддерживаемые за исключением угловых случаев, когда используются -fextended-identifiers), проблемы с плавающей точкой (в основном, но не полностью связанные с необязательными C99 из приложений F и G) и дополнительных приложений K (Интерфейсы проверки границ) и L (анализируемость). Новое расширение C __auto_type предоставляет подмножество функций С++ 11 auto в GNU C.

Из этого трудно сказать, что все это будет иметь в виду, когда педаль попадает в металл. Обновление среды с последней версией GCC 4.9.0 и несколькими простыми программами драйверов подтвердит, насколько и как мало это реализуется.

Надеюсь, что это поможет.

Ответ 4

FreeBSD предоставляет threads.h с FreeBSD 10.0. Программа должна быть связана с libstdsthreads.

Ответ 5

PDCLib (стандартная библиотека Public Domain C) включает полную поддержку AFAICT для threads.h, и это не оболочка вокруг pthreads.