Ce qui suit est mon 1er programme multi-thread. Mais alors qu'il a été compilé, il y a une erreur de liaison. La partie du message d'erreur :
std::thread::thread<void (&)(int), int&>(void (&)(int), int&):
test.cpp (.text._ZNSt6threadC2IRFviEJRiEEEOT_DpOT0_[_ZNSt6threadC5IRFviEJRiEEEOT_DpOT0_]+0x33): undefined reference pthread_create
collect2: error ld return 1
#include<thread>
void f(int i) {}
int main() {
std::thread t(f, 1);
t.join();
return 0;
}
Réponse acceptée :
Vous devez compiler avec -pthread
comme option de compilation.
J'ai eu votre code à compiler avec ceci (bien que j'ai ajouté le -Wall
fonction pour me donner tous les avis d'avertissement):
g++ -pthread -out foo.exe foo.cpp
(où foo.cpp
était le nom du fichier d'entrée que j'ai utilisé contenant votre code)