Necesito alguna opinión GCC siempre fue un muy buen compilador, pero recientemente está perdiendo "atractivo". Acabo de descubrir que en Windows GCC no tiene std::thread
soporte, lo que obliga a los usuarios de Windows a usar otro compilador porque todavía falta la característica más emocionante.
Pero, ¿por qué realmente GCC todavía no tiene soporte para subprocesos en Windows? ¿Problemas de licencia? Incompatibilidades ABI? (Bueno, ya hay varias bibliotecas multiplataforma que usan subprocesos múltiples: boost, POCO, SDL, wxwidgets, etc. ¿No sería fácil usar un código ya existente y con licencia MIT / libpng para adaptarse a este agujero en lugar de enviar versiones de GCC sin soporte de hilo?)
Recientemente, mirando las comparaciones de compiladores, GCC tiene el soporte más amplio para las características de C ++ 11 con respecto a otros compiladores, excepto por el hecho de que en Windows esto no es cierto porque todavía nos faltan atómicos, mutexes e hilos: /
Me gustaría saber más sobre este tema, pero lo único que puedo encontrar es que las personas soliciten ayuda porque:
"thread" no existe en el espacio de nombres estándar
Mirando el seguimiento de tickets y las discusiones por correo de GCC / TDM-GCC, hubo solicitudes de soporte de hilos desde 2009. ¿Posible que después de 4 años todavía no haya solución? ¿Qué está pasando realmente?
fuente
Respuestas:
Comprendí que GCC está cayendo en desgracia porque las personas que lo mantienen se han vuelto algo arrogantes, y ahora que LLVM está aquí (y es muy bueno) la gente está votando con los pies.
Slashdot tuvo una discusión sobre el nuevo soporte de LLVM para C ++ 11 . _merlin dice:
lo que interviene con su observación sobre el retraso de 4 años.
fuente
std::thread
Windows, que es compatible con VS2012 EE)thread_local
variables de)La popularidad y usabilidad de GCC no es cuestionable.
Pero una consideración importante es la licencia.
Otras consideraciones importantes
De http://clang.llvm.org/comparison.html#gcc
De http://www.linuxquestions.org/questions/slackware-14/gcc-vs-llvm-931034/
interactuar y usarse, por ejemplo, para crear herramientas de análisis de código estático, lo que se vuelve cada vez más importante ()
De http://clang.debian.net/
fuente
-ftrack-macro-expansion
, ahora habilitada por defecto :)foo
ymoo
son punteros a diferentes tipos de estructura, los cuales tienen campobar
como parte de su secuencia inicial, la escritura*&foo->bar
y la lectura*&moo->bar
deberían hacer que la lectura vea la escritura, ya que el único tipo efectivo utilizado en cualquiera de los accesos es el tipobar
. GCC, sin embargo, parece filtrar el*&
y por lo tanto se filtra a los tipos defoo
emoo
...La razón por la que lleva mucho tiempo es porque se necesita mucho trabajo para obtener una base sólida para construir los encabezados. La forma en que mingw-w64 parece funcionar es construir una biblioteca sólida similar a pthreads en Windows. Hay menos gruñidos aguas arriba sobre eso que introducir una dependencia en el subproceso nativo de la API de Windows.
mingw-w64 implementa
<thread>
y los otros encabezados C ++ 11 en la parte superior de su propiawinpthreads
biblioteca. Esto debería estar disponible para probar tanto en Mingw-builds como en las distribuciones de rubenvb de la cadena de herramientas mingw-w64. Recomendaría seguir las listas de correo mingw-w64 si desea realizar un seguimiento de dónde se realiza la mayor parte del trabajo en Windows GCC nativo.El Proyecto Qt tiene una página wiki que detalla sus recomendaciones actuales y una vista general de las cadenas de herramientas de GCC en Windows, consulte esta página wiki del Proyecto Qt .
fuente