acorde - c11 quimica
C11<thread.h> en GCC? (4)
El encabezado C11 estándar para enhebrar es <threads.h>
, no <thread.h>
. Ver la sección 7.26 del borrador N1570 .
La mayoría de la biblioteca estándar de C, incluido stdio, por ejemplo, no está incluida en la distribución de gcc. En cambio, gcc depende de la biblioteca de tiempo de ejecución que proporcione el sistema operativo. Eso generalmente incluye tanto los encabezados (como <threads.h>
) como el código real que implementa la biblioteca.
Para la mayoría de los sistemas Linux (o GNU / Linux, si lo prefiere), la biblioteca es glibc de GNU; para otros sistemas será otra cosa.
Así que la verdadera pregunta es probablemente cuando glibc, o cualquier biblioteca C que esté utilizando, sea compatible con las funciones de subprocesamiento de C11.
(Tenga en cuenta que algunas partes de la biblioteca, las más estrechamente relacionadas con el compilador, son proporcionadas por gcc. La biblioteca de threading probablemente no sea una de ellas, pero ciertamente se requiere algún tipo de soporte para el compilador).
ACTUALIZACIÓN : WorldSEnder señala en un comentario que glibc agrega soporte para subprocesos C11 en la versión 2.28 . (Mi sistema Ubuntu L.04 18.04.1 LTS todavía usa glibc 2.27.) De nuevo, esto se aplica solo a las implementaciones que usan GNU libc, no a todas las implementaciones basadas en gcc.
Estoy intentando compilar algún código C11 usando thread.h
, pero no puedo. He recompilado GCC (ejecutando 4.6.2 ahora), y estoy tratando de compilar con gcc -std=c1x file.c -o file
. Puedo hacer esto en g ++ (usando la biblioteca de thread
, eso es) pero no puedo en C. ¿ thread.h
no está incluido en la distribución de GCC?
Para citar de la página de normas del CCG sobre C11:
GCC tiene soporte incompleto limitado para partes de este estándar
Aunque solo tengo GCC 4.6.1, no tengo un archivo de encabezado "thread.h" en ninguna parte de mi sistema.
Ni las páginas de cambios para 4.6 ni 4.7 mencionan hilos.
Hay "hilos" mencionados en la página de cambios 4.7, pero nada que parece tener algo que ver con eso en un contexto C11. Además, no se menciona nada acerca de C11 en la página 4.8 ascendente.
Puede encontrar más información sobre esto here .
... (Atomics - stdatomic.h - son opcionales, y es probable que deba esperar a que se implementen funciones de lenguaje asociado en GCC 4.8. Supongo que las interfaces de subprocesamiento opcional en threads.h y las interfaces de comprobación de límites en Annex Por el momento no se necesitan K para glibc, aunque podrían ir en bibliotecas separadas.
Mi suposición es que no veremos esto implementado por bastante tiempo, al menos no en glibc estándar y gcc (la publicación de origen proporciona alguna información). Mi suposición personal es algo así como un año, tomará probablemente algo así como 2 años hasta que sea lo suficientemente estable para el uso de producción. Eso es 2k14 (assert (survival_2012)): P
musl libc tiene C11 http://www.musl-libc.org/ glibc does threads.h support yet