Threads C ++, std :: system_error – opération non autorisée?

J’ai donc écrit un programme pour tester les threads sur kubuntu linux 64 bits, version 13.04. En fait, j’ai volé le code de quelqu’un d’autre qui écrivait un programme de test.

#include  #include  #include  void task1(const std::ssortingng msg) { std::cout << "task1 says: " << msg << std::endl; } int main(int argc, char **argv) { std::thread t1(task1, "Hello"); t1.join(); return EXIT_SUCCESS; } 

J’ai compilé en utilisant:

 g++ -pthread -std=c++11 -c main.cpp g++ main.o -o main.out 

Puis couru:

 ./main.out 

En passant, lorsque je “ls -l”, main.out apparaît dans le texte vert comme tous les exécutables, mais a également un astérisque à la fin de son nom. Pourquoi est-ce?

Retour au problème en main: quand j’ai couru sur main.out, une erreur est apparue, qui disait:

 terminate called after throwing an instance of 'std::system_error' what(): Operation not permitted Aborted (core dumped) 

Quelqu’un at-il des idées sur la façon de résoudre ce problème?

Vous ne liez pas correctement pthread, essayez ci-dessous la commande (remarque: l’ordre compte)

 g++ main.cpp -o main.out -pthread -std=c++11 

OU

Faites-le avec deux commandes

 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