2010-04-18 24 views
12

Aunque se ha dicho que el soporte para las nuevas características de C++ 0x en g ++ está en modo experimental, muchos desarrolladores de gcc afirmaron que puedes usar la mayoría de las funciones nuevas en tus códigos y obtener el programa para trabajar.compatibilidad con especificaciones g ++ y C++ 0x

pero cuando intento compilar este sencillo programa, se produce un error de segmentación. ¿Por qué?

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

+1

¿Qué versión de gcc estás utilizando? –

+2

Como alguien que no está inmerso en C++, la forma en que el objeto thread se inicia implícitamente al construirlo es sorprendente :-) – xyz

+0

gcc versión 4.4.3 – sepisoad

Respuesta

12

he vinculado la biblioteca ejecutable con pthread y funcionó! No vi ninguna dependencia de biblioteca compartida faltante (ldd), pero parece que la implementación estándar de la biblioteca C++ en Linux usa pthread internamente.

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

Dios mío, qué tonto soy. Gracias Sumant, Funciona bien con -lpthread switch – sepisoad

+0

Pensé que habría una implementación separada de C++ 0x hilo en g ++, pero como dijiste, actualmente utiliza la biblioteca de subprocesos posix. – sepisoad