2010-04-18 6 views
12

Bien qu'il ait été dit que le support pour les nouvelles fonctionnalités C++ 0x dans g ++ sont en mode expérimental, de nombreux développeurs gcc ont affirmé que vous pouvez utiliser la plupart des nouvelles fonctionnalités dans vos codes et obtenir le programme à travailler. Mais quand j'essaie de compiler ce programme simple, cela entraîne un défaut de segmentation. Pourquoi?support des spécifications g ++ et C++ 0x

#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 exécuter main.cc

+1

Quelle version de gcc utilisez-vous? –

+2

Comme quelqu'un n'est pas immergé dans C++, la façon dont l'objet thread est implicitement démarré en le construisant est surprenant :-) – xyz

+0

gcc version 4.4.3 – sepisoad

Répondre

12

Je l'exécutable avec lié pthread et la bibliothèque a fonctionné! Je n'ai vu aucune dépendance de bibliothèque partagée manquante (ldd), mais il semble que l'implémentation de la bibliothèque C++ std sous Linux utilise pthread en interne.

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

Oh mon dieu, comme je suis bête. Merci Sumant, ça fonctionne bien avec le commutateur -lpthread – sepisoad

+0

Je pensais qu'il y aurait une implémentation séparée du thread C++ 0x dans g ++, mais comme vous l'avez dit, il utilise actuellement la bibliothèque de thread posix. – sepisoad

Questions connexes