2010-10-14 9 views
12

Eksperymentuję z wątkami w C++ 0x, częściowo zaimplementowanymi w gcc 4.5 i mam problem, którego nie mogę zrozumieć. Rzućmy okiem na ten kod:std :: przyszły wyjątek na eksperymentalnej implementacji gcc C++ 0x

#include <future> 
#include <iostream> 

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

To całkiem proste i powinno działać, ale tak nie jest. To rzuca std :: system_error

terminate nazywany po wrzuceniu instancję 'std :: system_error' co(): Przerwano

co() zwraca pusty ciąg znaków, więc nie ma błędu informacje w ogóle. Co więcej, nie działał on na kompilatorze online, który również korzysta z gcc 4.5, ale teraz działa. Możesz go zobaczyć tutaj: http://liveworkspace.org/code/f3003d62a758e047a880920c84f1241c , ale wczoraj był to ten sam wyjątek (chociaż na serwerze nie wprowadzono żadnych zmian). Czy wiesz, jaki jest problem?

Dzięki.

+0

Dokładnie jakiej wersji używasz? –

+0

gcc wersja 4.5.0 (GCC) – confucius

Odpowiedz

18

Spróbuj połączyć z -lpthread. Z jakiegoś powodu biblioteka wątków kompiluje się bez pthreadów, ale ulega awarii w czasie wykonywania.

+2

Tak !!! To jest to! Dziękuję bardzo. – confucius