¿Alguna biblioteca C implementa hilos C11 para GNU / Linux?

Ha habido muchas preguntas sobre el enhebrado C11 y C11, pero no veo una respuesta definitiva en ninguna parte:

¿Alguna biblioteca C implementa la interfaz de subprocesamiento C11 utilizable en GNU / Linux? por ejemplo, proporcione el “opcional” y la biblioteca de soporte de hilos como thrd_create() , del estándar C11 cerca de p. 376.

Idealmente, me gustaría encontrar una biblioteca que sea común-ish, de código abierto o gratuita, para architecture común / genérica / multi (por ejemplo, GNU / Linux, x86_64 o portable-ish).

Algunos de los enlaces SO más útiles y relevantes:

  • este y este en glibc ;
  • este que está hablando del estándar;
  • este sobre clang ;
  • este sobre C11 en general y este sobre Windows y otras plataformas;
  • mucho más sobre C ++ 11 enhebrado, pero solo estoy interesado en C11.

Algunas opciones no iniciadas para bibliotecas:

  • glibc biblioteca glibc no lo hace ; hay un error abierto desde 2012; hubo una propuesta de GSoC pero parece no ser aceptada ;
  • El proyecto LLVM / Clang no tiene una biblioteca C;
  • la biblioteca de musl no lo hace ; – ahora lo hace! Ver la edición a continuación y responder .
  • La biblioteca Newlib admite threading ( docs ), pero no utiliza pthread ni C11;
  • uClibc no lo hace;
  • este cuadro de comparación , que es dudoso (p. ej., no veo evidencia en fonts globales para el soporte de almacenamiento local de subprocesos C11);
  • Algunas publicaciones sobre BSD ,
  • Pelles , que parece cerrado y solo para Windows.

No me interesan los hilos POSIX (muchas opciones finas), Windows, un IDE ni C ++ 11 (sé que GNU libstdc++ y LLVM / Clang libc++ proporcionan el std::thread C ++ 11, que usa -pthread )

¡Gracias!


(re) Editar: la pregunta se volvió a abrir, por lo que el contenido migrado para responder a la limpieza.

musl ahora (desde septiembre 2014-ish) implementa subprocesos C11!

De acuerdo con esta publicación reciente de la lista de correo de musl y otras conversaciones en esa lista en julio-septiembre de 2014 , parece que la biblioteca de musl ahora (desde 2014-09-07) implementa la interfaz de subprocesos C11, aunque el gráfico de comparación ; no a partir de este escrito refleja esto.

Dado que esta pregunta se vuelve a abrir, moví este contenido a una respuesta adecuada.

https://github.com/jtsiomb/c11threads es una implementación Trivial C11 threads.h sobre hilos POSIX. contenido en un solo encabezado.

Finalmente, GNU LIBC 2.28 admite C11 ISO Threads.

Supongo que Archlinux, Gentoo y Suse Tumbleweed lo apoyarán rápidamente. Más tarde en este año Fedora y Ubuntu y los demás en 2019 o más tarde.

Hmmm, parece que GCC 4.9.0 en realidad ofrece un soporte sustancial para los estándares C11 (al menos desde que los documentos web fueron modificados hacia fines de junio de 2014).

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

Una cuarta versión del estándar C, conocida como C11, se publicó en 2011 como ISO / IEC 9899: 2011. GCC tiene soporte sustancialmente completo para este estándar, habilitado con -std = c11 o -std = iso9899: 2011. (Durante el desarrollo, los borradores de esta versión estándar se denominaron C1X).

Y desde https://gcc.gnu.org/gcc-4.9/changes.html

Los atomics ISO C11 (el especificador de tipo Atómico y el calificador y el encabezado) ahora son compatibles. Las selecciones genéricas de ISO C11 (_Generic keyword) ahora son compatibles. El almacenamiento local de subprocesos ISO C11 (_Thread_local, similar a GNU C __thread) ahora es compatible. La compatibilidad con ISO C11 ahora se encuentra en un nivel similar de compatibilidad con ISO C99: errores de módulo sustancialmente completos, identificadores ampliados (con excepción de casos de esquina cuando se usan identificadores -fxtended), problemas de coma flotante (principalmente pero no totalmente relacionados con el opcional C99 características de los Anexos F y G) y los Anexos K opcionales (Interfaces de verificación de límites) y L (Analizabilidad). Una nueva extensión C __auto_type proporciona un subconjunto de la funcionalidad de C ++ 11 auto en GNU C.

A partir de ahí, es difícil saber qué significará todo eso cuando el pedal toque el metal. Una actualización en un entorno a la última versión de GCC 4.9.0 y unos pocos progtwigs de controladores simples confirmarían cuánto o qué tan poco se está implementando.

Espero eso ayude.

FreeBSD proporciona threads.h desde FreeBSD 10.0 El progtwig necesita estar enlazado con libstdsthreads.

PDCLib (la biblioteca estándar Public Domain C) incluye soporte completo de AFAICT para threads.h, y no es un envoltorio de pthreads.

FreeBSD parece envolver los hilos posix. Puede encontrarlo aquí: hilos de FreeBSD c11 . Pude usar esto en Cygwin. Hasta ahora no hay problemas pero aún no los he usado.