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:
glibc
;clang
;Einige Nicht-Starter-Optionen für Bibliotheken:
glibc
library nicht ; es gibt einen offenen Fehler seit 2012; da war GSoC-Vorschlag , aber es scheint nicht akzeptiert ;pthread
noch C11-Threads.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.
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.
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.
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.
FreeBSD stellt threads.h
seit FreeBSD 10.0 zur Verfügung.
PDCLib (die Public Domain C-Standardbibliothek) bietet AFAICT-Unterstützung für threads.h. Es ist kein Wrapper für pthreads.
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.