threads - thread c++ ejemplo
C++ Threads, std:: system_error-¿operación no permitida? (1)
Esta pregunta ya tiene una respuesta aquí:
Así que escribí un programa para probar los hilos en 64 bit kubuntu linux, versión 13.04. En realidad, robé el código a otra persona que estaba escribiendo un programa de prueba.
#include <cstdlib>
#include <iostream>
#include <thread>
void task1(const std::string msg)
{
std::cout << "task1 says: " << msg << std::endl;
}
int main(int argc, char **argv)
{
std::thread t1(task1, "Hello");
t1.join();
return EXIT_SUCCESS;
}
Compilé usando:
g++ -pthread -std=c++11 -c main.cpp
g++ main.o -o main.out
Luego corrió:
./main.out
Como un aparte, cuando ''ls -l'', main.out aparece en texto verde como todos los archivos ejecutables, pero también tiene un asterisco al final de su nombre. ¿Por qué es esto?
Volviendo al problema en cuestión: cuando ejecuté main.out, apareció un error que decía:
terminate called after throwing an instance of ''std::system_error''
what(): Operation not permitted
Aborted (core dumped)
Alguien alguna idea sobre cómo solucionar esto?
Usted no está enlazando pthread correctamente, intente debajo del comando (nota: el orden es importante)
g++ main.cpp -o main.out -pthread -std=c++11
O
Hazlo con dos comandos
g++ -c main.cpp -pthread -std=c++11 // generate target object file
g++ main.o -o main.out -pthread -std=c++11 // link to target binary