2010-08-07 21 views
10

Navegando a través de una moneda en el libro de C++ 0x y pensé que podría ejecutar el código de muestra. Es lo más básico que se puede.C++ 0x "Hello Concurrent World" inmediatamente segfaults en g ++/linux?

#include <iostream> 
#include <thread> 

void hello() 
{ 
    std::cout<<"Hello Concurrent World\n"; 
} 


int main(int argc, char *argv[]) 
{ 
    std::thread t(hello); 

    t.join(); 
} 

compilado con:

g++ -std=c++0x -g -o pgm pgm.cpp 

hace bum con:

Program received signal SIGSEGV, Segmentation fault. 
_dl_fixup (l=0x7ffff7b0992c, reloc_arg=<value optimized out>) at ../elf/dl-runtime.c:147 
147  ../elf/dl-runtime.c: No such file or directory. 
     in ../elf/dl-runtime.c 

parece ser un/tema biblioteca de instalación de algún tipo. Alguien familiarizado con esto?

Respuesta

20

Necesita compilar/vincular usando la bandera -pthread.

+0

Golpe en la cabeza! Eso es. – ValenceElectron

+7

¿No debería la implementación de C++ ocuparse de este detalle? De lo contrario, ¿de qué sirve tener std :: thread? –

+0

No entiendo por qué no da errores de enlazador. –