2010-08-24 9 views
5

Aún no soy usuario de Boost. Sin embargo, planeo entrar en esto lo antes posible. Sin embargo, estoy poco preocupado por Boost, y las posibles colisiones futuras de nombre o diferencias con el próximo C++ 0x. (Tal vez no es un problema real, pero, por ejemplo, creo que la sintaxis de boost de lambdas es bastante fea, BOOST_FOREACH es agresiva para el ojo y otras solo vistas estéticas personales).Boost.Thread o solo :: hilo?

Estoy realmente interesado por el TR2, que parece ser implementado por las bibliotecas Boost.Thread y just::thread. Ambos parecen escritos y mantenidos por Anthony Williams.

Pero just :: thread dice que cumple estrictamente con TR2.

Quería saber si alguno de ustedes me indicaría usar uno u otro. solo :: thread no es gratis, pero si fuera realmente como TR2, estoy tentado.

¿Alguna idea?

Respuesta

5

En este momento estoy experimentando, en Linux, con las bibliotecas boost, just :: thread y las características llamadas 'experimentales' de C++ Ox del compilador gcc g ++ 4.5. Con respecto al enhebrado, tengo que presionar He encontrado que el código que he escrito para just :: thread y el compilador g ++ es 100% compatible. Las bibliotecas de impulso (1.43) son marcadamente incompatibles con las dos anteriores. Sin embargo, para mi código de producción utilizo las bibliotecas de impulso.

La colisión de nombres no debería ser un problema con el uso correcto y juicioso de los espacios de nombres disponibles en boost, just :: thread y los compiladores g ++. No tengo problemas para usar solo :: hilo con las características de C++ Ox g ++; de hecho, es recomendado por solo :: thread que se usen estas características, como plantillas variadic.

+0

¿Qué quiere decir con "bibliotecas de impulso (1.43) son marcadamente incompatibles con las dos anteriores". ¿De qué tipo de compatibilidad estás hablando? –

+0

@Stephane: 'código que he escrito para just :: thread y el compilador g ++ para ser 100% compatible'; código compatible en el sentido de que el código escrito que compila y enlaces con éxito para just :: thread bajo C++ Ox se compilará y vinculará exitosamente usando solo C++ Ox g ++ 4.5 sin modificación. No he podido lograr esta compatibilidad con las bibliotecas de impulso. – Sam

+0

@thanx Sam. Todavía estoy dudando, pero este es un buen punto para solo :: hilo. –

4

Creo que es demasiado pronto para decir que una biblioteca es "como TR2". El TR2 se lanzará después de C++ 0x, que ni siquiera se ha lanzado aún.

Sin embargo, la biblioteca Boost.Thread también afirma seguir el desarrollo en el Comité de estandarización.

Preferiría cualquier biblioteca de Boost por encima de su "original", porque Boost está comprometido con la alta calidad y la comunidad de Boost mantiene bibliotecas en colaboración, en lugar de una biblioteca privada que acaba de migrar para impulsar.

No tiene que temer los conflictos de nombres, ya que lo que está actualmente en el espacio de nombres boost:: permanecerá en el espacio de nombres, y todo lo de TR2 probablemente irá al std::tr2::.

-1

El mejor consejo en este momento - ninguno de los de arriba :-)

A menos que tenga una necesidad absolutamente apremiante, se ahorrará mucho tiempo y el dolor con sólo esperar hasta C++ 0x instala primero , que tomará alrededor de 2 años. Si alguien te está pidiendo que vayas en busca de objetivos móviles, pide primero ver el dinero :-) y un gran retenedor :-))

Como en muchos otros casos, lo mejor es primero preguntarte "¿cuáles son mis necesidades reales?" ? Si está aprendiendo el desarrollo multihilo, entonces pasar el tiempo con C# o Java será mucho más fácil. Si necesita comenzar a desarrollar un sistema de nivel de producción, ya conoce su plataforma de destino y lo mejor que puede hacer es seguir con lo que sea una libra probada para multi-threading en su plataforma de destino y tiene soporte completo de depurador . Solo para repetirlo de nuevo: la compatibilidad y la integración total del depurador es lo que decide la calidad de vida que tienes en el hilo conductor.

Si toca Boost, asegúrese de tener suficiente tiempo para asegurarse de que no tiene dependencias en una docena de otros archivos de boost-something y luego otra docena ... a menos que esté afficionado que :-) Si Usted toca una libraty que dice que la detección automática de dedlock está preparada para pagar en ciclos de CPU y para manejar interferencias potencialmente no deseadas.

Cuestiones relacionadas