2010-04-18 13 views
12

obwohl es gesagt wurde, dass die Unterstützung für C++ 0x neue Funktionen in g ++ im experimentellen Modus sind, behaupteten viele gcc-Entwickler, dass Sie die meisten der neuen Funktionen in Ihren Codes verwenden und erhalten können das Programm zu arbeiten.g ++ und C++ 0x Spezifikation Unterstützung

aber wenn ich versuche, dieses einfache Programm zu kompilieren, führt dies zu Segmentierungsfehlern. Warum?

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

+1

Welche Version von gcc verwenden Sie? –

+2

Als jemand, der nicht in C++ eingetaucht ist, ist die Art und Weise, wie das Thread-Objekt implizit gestartet wird, überraschend :-) – xyz

+0

gcc-Version 4.4.3 – sepisoad

Antwort

12

ich die ausführbare Datei mit pthread-Bibliothek verknüpft und es funktionierte! Ich sah keine shared library dependency (ldd), aber scheint wie std C++ - Bibliothek Implementierung unter Linux verwendet pthread intern.

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

Oh mein Gott, wie viel Dummheit ich bin. Danke Sumant, es funktioniert gut mit -lpthread-Schalter – sepisoad

+0

Ich dachte, dass es eine separate Implementierung von C++ 0x-Thread in g ++ geben würde, aber wie Sie sagten, es derzeit verwendet Posix-Thread-Bibliothek. – sepisoad