2010-10-14 7 views
12

J'expérimente avec le threading C++ 0x, partiellement implémenté dans gcc 4.5 et j'ai un problème, que je ne peux pas comprendre. Jetons un coup d'oeil sur ce codestd :: future exception sur l'implémentation expérimentale gcc de C++ 0x

#include <future> 
#include <iostream> 

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

C'est très simple et devrait fonctionner, mais ce n'est pas le cas. Il jette std :: system_error

Mettre fin à appelé après avoir jeté une instance de 'std :: system_error' ce(): Aborted

ce que() retourne une chaîne vide, donc il n'y a pas d'erreur informations du tout. Plus que ça, ça ne fonctionnait pas sur le compilateur en ligne, qui utilise aussi gcc 4.5, mais maintenant ça marche. Vous pouvez le voir ici http://liveworkspace.org/code/f3003d62a758e047a880920c84f1241c mais hier il lançait la même exception (cependant, aucune modification n'a été faite sur le serveur). Savez-vous quel est le problème?

Merci.

+0

Exactement quelle construction utilisez-vous? –

+0

gcc version 4.5.0 (GCC) – confucius

Répondre

18

Essayez de créer un lien avec -lpthread. Pour une raison quelconque, la bibliothèque de threads compile sans pthreads mais se bloque lors de l'exécution.

+2

Oui !!! C'est tout! Merci beaucoup. – confucius

Questions connexes