J'ai besoin d'un avis. GCC a toujours été un très bon compilateur, mais récemment il perd son "attrait". Je viens de découvrir que sous Windows, GCC ne prend pas en std::thread
charge, ce qui oblige les utilisateurs de Windows à utiliser un autre compilateur car la fonctionnalité la plus intéressante est toujours manquante.
Mais pourquoi GCC n'a-t-il pas encore de support des threads sous Windows? Problèmes de licence? Incompatibilités ABI? (Eh bien, il existe déjà plusieurs bibliothèques multiplateformes utilisant le multithreading: boost, POCO, SDL, wxwidgets, etc. Ne serait-il pas simple d'utiliser déjà existant, et sous licence MIT / libpng, du code pour s'adapter à ce trou au lieu d'expédier des versions GCC sans support de thread?)
Récemment, en regardant les comparaisons de compilateurs, GCC a la prise en charge la plus large des fonctionnalités C ++ 11 par rapport aux autres compilateurs, à l'exception du fait que sous Windows, ce n'est pas vrai car nous manquons toujours d'atomiques, de mutex et de threads: /
J'aimerais en savoir plus sur ce sujet, mais la seule chose que je puisse trouver, ce sont les gens qui demandent de l'aide parce que:
"thread" n'existe pas dans l'espace de noms std
En regardant le suivi des tickets et les discussions par mail de GCC / TDM-GCC, il y a eu des demandes de support de thread depuis 2009. Possible qu'après 4 ans toujours pas de solution? Que se passe-t-il vraiment?
la source
Réponses:
J'ai compris que GCC est en train de tomber en disgrâce parce que les gens qui le maintiennent sont devenus quelque peu arrogants, et maintenant que LLVM est ici (et c'est très bien), les gens votent avec les pieds.
Slashdot a discuté du nouveau support de LLVM pour C ++ 11 . _merlin dit:
ce qui correspond à votre observation sur le retard de 4 ans.
la source
std::thread
Windows qui est pris en charge dans VS2012 EE)thread_local
variables)La popularité et la convivialité de GCC ne sont pas discutables.
Mais la considération importante est la licence.
Autres considérations importantes
Depuis http://clang.llvm.org/comparison.html#gcc
Sur http://www.linuxquestions.org/questions/slackware-14/gcc-vs-llvm-931034/
interfacé et utilisé par exemple pour créer des outils d'analyse de code statique, ce qui devient de plus en plus important ()
Depuis http://clang.debian.net/
la source
-ftrack-macro-expansion
, désormais activée par défaut :)foo
etmoo
sont des pointeurs vers différents types de structure, qui ont tous deux un champbar
dans leur séquence initiale, l'écriture*&foo->bar
et la lecture*&moo->bar
devraient faire en sorte que la lecture voit l'écriture, car le seul type efficace utilisé dans l'un ou l'autre accès est le type debar
. GCC, cependant, semble filtrer le*&
et percole donc les types defoo
etmoo
...La raison pour laquelle cela prend beaucoup de temps est qu'il faut beaucoup de travail pour obtenir une base solide pour construire les en-têtes. La façon dont mingw-w64 semble bo est de construire une bibliothèque solide de type pthreads sous Windows. Il y a moins de grincheux en amont à ce sujet que d'introduire une dépendance sur le thread natif de l'API Windows.
mingw-w64 implémente
<thread>
et les autres en-têtes C ++ 11 au-dessus de leur proprewinpthreads
bibliothèque. Cela devrait être disponible pour les tests dans les builds Mingw et les distributions rubenvb de la chaîne d'outils mingw-w64. Je recommanderais de suivre les listes de diffusion mingw-w64 si vous souhaitez suivre où la plupart du travail sur le travail natif de Windows GCC est effectué.Le projet Qt a une page wiki détaillant leur recommandation actuelle et une vue d'ensemble des chaînes d'outils GCC sur Windows, voir cette page wiki du projet Qt .
la source