web-dev-qa-db-de.com

Implementiert eine C-Bibliothek C11-Threads für GNU/Linux?

Es gab viele von Fragen zum Threading von C11 und C11, aber ich sehe nirgendwo eine endgültige Antwort: 

Implementiert any C-Bibliothek die C11-Threading-Schnittstelle, die unter GNU/Linux verwendet werden kann? Geben Sie beispielsweise das "optionale" <threads.h> und die Thread-Unterstützungsbibliothek wie thrd_create() aus dem C11-Standard in der Nähe von p an. 376.

Im Idealfall möchte ich eine Bibliothek finden, die für die allgemeine/generische/multi-Architektur (z. B. GNU/Linux, x86_64 oder portable-ish) gängig, Open Source oder frei ist.

Einige hilfreiche und relevante SO -Links:

  • dieses und dieses auf glibc;
  • dieses , das über den Standard spricht;
  • dieses über clang;
  • dieses über C11 allgemein und dieses über Windows und andere Plattformen;
  • viel mehr über C++ 11 threading, aber ich interessiere mich nur für C11.

Einige Nicht-Starter-Optionen für Bibliotheken:

Ich bin nicht interessiert an POSIX-Threads (viele feine Optionen), Windows, einer IDE oder C++ 11 (ich weiß, dass GNU libstdc++ und LLVM/Clang libc++ C++ bereitstellen 11's std::thread, der -pthread verwendet

Vielen Dank!


(erneut) Bearbeiten: Frage erneut geöffnet, also migrierter Inhalt zur Beantwortung bereinigen.

53
hoc_age

musl implementiert jetzt (seit September 2014) C11-Threads!

Laut diesem aktuellen musl-Mailinglisten-Post und anderen Gesprächen in dieser Liste im Juli-Sep 2014 scheint es, dass die musl -Bibliothek jetzt (Stand vom 07.09.2014) die C11-Threads-Schnittstelle, obwohl die Vergleichstabelle ; spiegelt dies zum jetzigen Zeitpunkt nicht wider.

Da diese Frage erneut geöffnet wird, habe ich diesen Inhalt in eine richtige Antwort verschoben.

17
hoc_age

Schließlich unterstützt GNU LIBC 2.28 C11-ISO-Threads.

Ich gehe davon aus, dass Archlinux, Gentoo und Suse Tumbleweed dies schnell unterstützen werden. Später in diesem Jahr Fedora und Ubuntu und die anderen im Jahr 2019 oder später.

13
Peter

https://github.com/jtsiomb/c11threads ist eine "Trivial C11 threads.h-Implementierung über POSIX-Threads". in einem einzigen Header enthalten.

Hmmm, es sieht so aus, als würde GCC 4.9.0 die Unterstützung von C11-Standards tatsächlich unterstützen (zumindest seit die Web-Dokumente gegen Ende Juni 2014 geändert wurden).

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

Eine vierte Version des C-Standards, bekannt als C11, wurde in .__ veröffentlicht. 2011 als ISO/IEC 9899: 2011. GCC hat im Wesentlichen vollständige Unterstützung für Dieser Standard ist mit -std = c11 oder -std = iso9899: 2011 aktiviert. (Während der Entwicklung von Wurden Entwürfe dieser Standardversion als C1X bezeichnet.)

Und von https://gcc.gnu.org/gcc-4.9/changes.html

ISO-C11-Atomics (der _Atomic-Typbezeichner und -qualifizierer und der -Header) werden jetzt unterstützt. Allgemeine Auswahlmöglichkeiten nach ISO C11 (_Generic-Schlüsselwort) werden jetzt unterstützt. Thread-lokaler ISO-C11-Speicher (_Thread_local, ähnlich wie GNU C __thread) wird jetzt unterstützt. ISO C11 Der Support befindet sich jetzt auf einem ähnlichen Niveau wie der ISO-C99-Support: im Wesentlichen vollständige Modulo-Fehler, erweiterte Bezeichner (unterstützt..., außer in Fällen, in denen -fextended-Bezeichner verwendet werden),.,. Fließkomma-Ausgaben (hauptsächlich, aber nicht ausschließlich in Bezug auf optionale C99-Funktionen aus den Anhängen F und G) und die optionalen Anhänge K (Grenzüberprüfungsschnittstellen) und L (Analysierbarkeit). Eine neue C-Erweiterung __auto_type stellt eine Teilmenge der Funktionalität von C++ 11 auto in GNU C bereit.

Es ist schwer zu sagen, was das alles bedeuten wird, wenn das Pedal das Metall berührt. Ein Upgrade in einer Umgebung auf die neueste Version von GCC 4.9.0 und einige einfache Treiberprogramme würden bestätigen, wie viel oder wie wenig implementiert wird.

Ich hoffe es hilft.

4
luis.espinal

FreeBSD stellt threads.h seit FreeBSD 10.0 zur Verfügung. 

3
M.K. aka Grisu

PDCLib (die Public Domain C-Standardbibliothek) bietet AFAICT-Unterstützung für threads.h. Es ist kein Wrapper für pthreads.

1
MarcusJ

FreeBSD scheint sich um die Posix-Threads zu wickeln. Sie finden es hier: FreeBSD c11-Threads . Ich konnte das in Cygwin verwenden. Bisher keine Probleme, aber ich habe es noch nicht so oft benutzt.

0
annoying_squid