2010-10-14 12 views
12

Estoy experimentando con C++ 0x threading, parcialmente implementado en gcc 4.5 y tengo un problema, que no puedo entender. Echemos un vistazo a este códigostd :: excepción futura en gcc implementación experimental de C++ 0x

#include <future> 
#include <iostream> 

int main() 
{ 
     std::cout << std::async([]() { return 10; }).get() << std::endl; 
} 

es bastante simple y debería funcionar, pero no lo es. Se lanza std :: SYSTEM_ERROR

terminar el arrendamiento llama después de lanzar una instancia de 'std :: SYSTEM_ERROR' lo que(): abortada

lo que() devuelve una cadena vacía, así que no hay error información en absoluto. Más que eso, no estaba funcionando en el compilador en línea, que también usa gcc 4.5, pero ahora funciona. Puede verlo aquí http://liveworkspace.org/code/f3003d62a758e047a880920c84f1241c pero ayer arrojaba la misma excepción (aunque no se han realizado cambios en el servidor). ¿Sabes cuál es el problema?

Gracias.

+0

¿Qué versión está usando exactamente? –

+0

gcc versión 4.5.0 (GCC) – confucius

Respuesta

18

Intente vincular con -lpthread. Por algún motivo, la biblioteca de hilos se compila sin pthreads pero se bloquea en el tiempo de ejecución.

+2

Sí !!! ¡Eso es! Muchas gracias. – confucius

Cuestiones relacionadas