Uso i thread che il c++11 mette a disposizione.
Il codice è banalmente questo:
codice:
#include <iostream>
#include <chrono>
#include <thread>
using namespace std;
void foo() {
cout << "FOO";
}
void bar() {
cout << "BAR";
}
int main()
{
thread t(foo),t2(bar);
t.join();
this_thread::sleep_for(chrono::seconds(2));
t2.join();
return 0;
}
Il punto è che mi stampa direttamente "FOOBAR" senza aspettare 2 secondi.
Non so se sto usando male io la classe o se magari ho settato male alcune flag del compilatore(ho settato solo quella per il c++11). Come IDE uso QtCreator e come compilatore MinGW 4.8.
Ho provato ad impostare la flag sia nel .pro che in project ma l'esito è lo stesso.
Posto anche i "modi" che ho provato per impostare la flag:
codice:
QMAKE_CXXFLAGS += -std = c++11
CONFIG += c++11
Inoltre ho notato che se semplicemente associo un thread ad una funzione il programma genera una active exception quando viene chiamato il distruttore.
Davvero non so cosa dire.
Cercando una soluzione ho trovato un altro "comportamento" strano: se commento le righe nelle quali eseguo le join mi stampa a video sempre "FOOBAR" anche se non chiamo mai le due funzioni.