2010-10-25 15 views

Respuesta

10

Visual C++ 2010 no proporciona el soporte de subprocesos C++ 11 o las bibliotecas atomics.

Si desea utilizar ese código en Visual C++ 2010, deberá usar una implementación de esas bibliotecas por parte de un tercero. Una opción es just::thread; no es gratis, pero tengo una copia y estoy bastante satisfecho con ella.

O bien, puede utilizar otra biblioteca de hilos multiplataforma como Boost.Thread u OpenThreads o una de las bibliotecas nativas de hilos de Windows. Cualquiera de estas opciones probablemente requerirá cambios en el código para poder ejecutarse.

Tenga en cuenta que Visual C++ 11 admitirá estas bibliotecas, y se incluyen en Visual C++ 11 Beta.

+0

Y un equivalente libre es Boost.Thread and Boost.Atomic (no oficial). – GManNickG

+0

@GMan: cierto; Una cosa importante que Boost.Thread es (a lo mejor de mi conocimiento) que falta es un equivalente a 'std :: async', que es lo mejor desde la creación del destructor. –

+0

Sí, tiene futuros, por lo que no está demasiado lejos de su alcance. – GManNickG

1

VC++ admite la sintaxis incrustada especial OpenMP (http://msdn.microsoft.com/en-us/library/tt15eb9t(VS.80).aspx) - tenga en cuenta que g ++ también es compatible, por lo que puede obtener código de plataforma cruzada.

+1

¿cómo se relaciona la pregunta con OpenMP? – CharlesB

+1

@CharlesB - OpenMP integra a nivel de lenguaje todas las primitivas esperadas por multihebra y la forma de paralelizar la ejecución: atomic, barrier, crítica y paralela por fin. ¿Qué mal con la respuesta? Se relaciona con VS ++, responde cómo proporcionar multihilo sin biblioteca de terceros. – Dewfy

+1

y el código publicado en la pregunta está relacionado con la biblioteca de hilos de C++ 0x, que OpenMP no implementa, por lo tanto, mi comentario. – CharlesB

Cuestiones relacionadas