Quello che segue è il mio primo programma multi-thread. Ma mentre è stato compilato, c'è un errore di collegamento. La parte del messaggio di errore:
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;
}
Risposta accettata:
Devi compilare con -pthread
come opzione di compilazione.
Ho ottenuto il tuo codice da compilare con questo (anche se ho aggiunto il -Wall
funzione per darmi tutti gli avvisi):
g++ -pthread -out foo.exe foo.cpp
(dove foo.cpp
era il nome del file di input che ho usato contenente il tuo codice)