2010-04-18 13 views
12

chociaż powiedziano, że obsługa C++ 0x nowych funkcji w g ++ jest w trybie eksperymentalnym, wielu deweloperów gcc twierdziło, że możesz użyć większości nowych funkcji w swoich kodach i uzyskać program do pracy.Obsługa specyfikacji ++ g ++ i C++ 0x

ale kiedy próbuję skompilować ten prosty program, powoduje to błąd segmentacji. Czemu?

#include <thread> 
#include <iostream> 

void my_thread_func() 
{ 
    std::cout<<"hello"<<std::endl; 
} 

int main() 
{ 
    std::thread t(my_thread_func); 
    t.join(); 
} 

g ++ -std = C++ 0x -Wall -o uruchomić main.cc

+1

Jaką wersję gcc używasz? –

+2

Jako ktoś nie zanurzony w C++, sposób, w jaki obiekt wątku jest domyślnie uruchamiany przez jego konstrukcję jest zaskakujący :-) – xyz

+0

gcc wersja 4.4.3 – sepisoad

Odpowiedz

12

ja połączony plik wykonywalny z biblioteki pthread i to działa! Nie widzę żadnych brakujących współdzielenia bibliotek współdzielonych (ldd), ale wydaje się, że implementacja biblioteki std C++ w systemie Linux używa wewnętrznie pthread.

g++ thread.cpp -o thread -Wall -std=c++0x -lpthread 
+0

O mój boże, ile jestem głupia. Dzięki Sumant, działa dobrze z przełącznikiem -lpthread – sepisoad

+0

Myślałem, że będzie osobna implementacja wątku C++ 0x w g ++, ale jak już powiedziałeś, aktualnie używa biblioteki wątków posix. – sepisoad