¿Alguna biblioteca de C implementa subprocesos de C11 para GNU / Linux?


Ha habido mucho de preguntas sobre C11 y C11 threading, pero no veo una respuesta definitiva en ninguna parte:

¿alguna biblioteca implementa la interfaz de subproceso C11 utilizable en GNU/Linux? por ejemplo, proporcione la "opcional" <threads.h> y la biblioteca de soporte de subprocesos como thrd_create(), de el estándar C11 cerca de la p. 376.

Idealmente, me gustaría encontrar una biblioteca que sea común, de código abierto o libre, para arquitectura 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; {[36]]}
  • este acerca de clang;
  • este sobre C11 en general y este acerca de Windows y otras plataformas;
  • mucho más sobre C++11 enhebrado, pero solo estoy interesado en C11.

Algunas opciones no iniciales para bibliotecas:

Yo soy no interesado en hilos POSIX (muchas opciones finas), Windows, un IDE, ni C++11 (sé que GNU libstdc++ y LLVM/Clang libc++ proporcionan C++11 std::thread, que usa -pthread)

Gracias!


(re-)Edit: pregunta re-abierta, por lo que migró el contenido a answer para limpiar.

Author: Community, 2014-07-03

7 answers

Musl ahora (a partir de Sep 2014-ish) implementa hilos C11!

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

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

 16
Author: hoc_age,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-09 14:27:23

Finalmente GNU LIBC 2.28 soporta hilos ISO C11.

Asumo que Archlinux, Gentoo y Suse Tumbleweed lo soportarán rápidamente. Más adelante en este año Fedora y Ubuntu y los otros en 2019 o más tarde.

 10
Author: Peter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-01 13:35:22

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

 8
Author: Ciro Santilli 新疆改造中心 六四事件 法轮功,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-11 17:16:33

Hmmm, parece que GCC 4.9.0 en realidad proporciona soporte sustancial para los estándares C11 (al menos desde que los documentos web se modificaron alrededor de finales 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, fue publicada en 2011 como ISO/IEC 9899: 2011. GCC tiene un soporte sustancialmente completo para este estándar, habilitado con -std = c11 o-std = iso9899: 2011. (Mientras que en desarrollo, los borradores de esta versión estándar fueron referidos como C1X.)

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

ISO C11 atomics (el especificador y calificador de tipo _atómico y el cabecera) ahora son compatibles. Selecciones genéricas ISO C11 (Palabra clave _Generic) ahora son compatibles. Hilo ISO C11-almacenamiento local (_Thread_local, similar a GNU C _ _ thread) ahora está soportado. ISO C11 el soporte se encuentra ahora en un nivel de integridad similar al soporte ISO C99: errores modulo sustancialmente completos, identificadores extendidos (soportados excepto para casos de esquina cuando se usa-fextended-identifiers), cuestiones de coma flotante (principalmente, pero no enteramente relacionadas con C99 características de los anexos F y G) y de los anexos facultativos K (Interfaces de comprobación de límites) y L (Capacidad de análisis). Una nueva extensión C __auto_type proporciona un subconjunto de la funcionalidad de C++11 auto en GNU C.

De eso, es difícil saber lo que realmente significa cuando el pedal golpea el metal. Una actualización en un entorno a la última versión de GCC 4.9.0 y unos pocos programas de controladores simples confirmarían cuánto o cuán poco se está implementando.

Espero que ayude.

 4
Author: luis.espinal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-03 15:40:54

FreeBSD proporciona threads.h desde FreeBSD 10.0 El programa necesita ser enlazado con libstdsthreads.

 3
Author: M.K. aka Grisu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-07 15:25:45

PDCLib (la biblioteca estándar de Dominio Público C) incluye soporte completo de AFAICT para subprocesos.h, y no es una envoltura alrededor de pthreads.

 1
Author: MarcusJ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-23 17:52:14

FreeBSD parece envolver los hilos posix. Puedes encontrarlo aquí: FreeBSD c11 threads . Pude usar esto en Cygwin. Hasta ahora no hay problemas, pero no lo he usado mucho todavía.

 0
Author: annoying_squid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-20 18:28:19