2010-04-18 10 views
12

anche se è stato detto che il supporto per le nuove funzionalità C++ 0x in g ++ sono in modalità sperimentale, molti sviluppatori di gcc hanno affermato che è possibile utilizzare la maggior parte delle nuove funzionalità nei codici e ottenere il programma per funzionare.supporto per le specifiche g ++ e C++ 0x

ma quando provo a compilare questo semplice programma risulta un errore di segmentazione. Perché?

#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 eseguire main.cc

+1

Quale versione di gcc stai usando? –

+2

Come qualcuno non immerso in C++, il modo in cui l'oggetto thread è implicitamente avviato dalla sua costruzione è sorprendente :-) – xyz

+0

versione gcc 4.4.3 – sepisoad

risposta

12

ho collegato l'eseguibile con libreria pthread e ha funzionato! Non ho visto alcuna dipendenza della libreria condivisa mancante (ldd), ma sembra che l'implementazione della libreria C++ std su Linux usi internamente pthread.

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

Oh mio Dio, quanto sono sciocco. Grazie Sumant, funziona bene con l'opzione -lpthread – sepisoad

+0

Ho pensato che ci sarebbe stata un'implementazione separata del thread C++ 0x in g ++, ma come hai detto attualmente utilizza la libreria dei thread posix. – sepisoad

Problemi correlati