web-dev-qa-db-fra.com

C11 GCC threads.h introuvable?

Le code suivant

#include <threads.h>

Me donne cette erreur:

fatal error: threads.h: No such file or directory

Utilisation des derniers GCC et Clang avec -std = c11.

Le filetage C11 n'est-il pas pris en charge par GCC et Clang? Ou y a-t-il un hack (ou quelque chose à installer) pour l'obtenir? J'utilise simplement Ubuntu 14.04 avec les paquets gcc et clang du repo Ubuntu.

23
lucasart

Le document gccétat C11 indique qu'il ne prend pas en charge le threading, il dit:

Filetage [Facultatif] | Problème de bibliothèque (non implémenté)

Comme le document l'indique, ce n'est pas vraiment un problème gcc ou clang mais glibc. Comme l'a souligné Zack, il semble que il y aura peut-être du travail bientôt pour obtenir le support de ceci dans glibc mais cela ne vous aidera pas maintenant. Vous pouvez utiliser this en attendant.

Correction pour la glibc 2.28

Selon le Bug 14092 - Support des threads C11 ceci est corrigé dans la glibc 2.28:

Mis en œuvre en amont par:

9d0a979 Ajouter une documentation manuelle pour threads.h
0a07288 nptl: Ajouter des cas de test pour les threads ISO C11
c6dd669 nptl: Ajouter des symboles abilistes pour les threads C11
78d4013 nptl: Ajouter des fonctions de threads C11 tss_ *
918311a nptl: Ajout de fonctions cnd_ * de threads C11
3c20a67 nptl: Ajouter des fonctions call_once aux threads C11
18d59c1 nptl: Ajouter des fonctions de threads C11 mtx_ *
ce7528f nptl: Ajouter des fonctions C11 aux fonctions thrd_ *

Il sera inclus en 2.28.

21
Shafik Yaghmour

Musl supporte C11 <threads.h>.

Dans Debian, installez musl-tools, puis compilez avec musl-gcc. Je travaille sur l'amorçage de Debian avec Musl au lieu de Glibc.

Voir aussi this .

4
user2548688

Bien que les threads C11 n'aient pas encore été implémentés, les threads C++ 11 ont été implémentés et ont des fonctionnalités similaires. Bien sûr, C++ 11 peut être une solution inacceptable, auquel cas les commentaires précédents sur les threads POSIX sont votre meilleur espoir.

1
Jeff