Uso i thread che il c++11 mette a disposizione.
Il codice è banalmente questo:
Il punto è che mi stampa direttamente "FOOBAR" senza aspettare 2 secondi.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; }
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:
Inoltre ho notato che se semplicemente associo un thread ad una funzione il programma genera una active exception quando viene chiamato il distruttore.codice:QMAKE_CXXFLAGS += -std = c++11 CONFIG += c++11
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.


Rispondi quotando