Im usando Visual Studio 2012 e C++ 11. Non capisco perché questo non funziona:std :: thread C++. Più discussioni stessi dati
void client_loop(bool &run)
{
while (run);
}
int main()
{
bool running = true;
std::thread t(&client_loop,std::ref(running));
running = false ;
t.join();
}
In questo caso, l'anello di filo t
non finisce mai, ma ho esplicitamente impostato running
-false
. run
e running
hanno la stessa posizione. Ho provato a impostare running
come una singola variabile globale ma non succede nulla. Ho provato a passare anche un valore puntatore ma niente.
I thread utilizzano lo stesso heap. Io davvero non capisco. Qualcuno può aiutarmi?
Il tuo programma termina troppo presto per osservare qualcosa di interessante. –
no, ho dimenticato di scrivere in questo esempio "t.join()" .. :) –
cosa succede se imposti 'running' come' volatile'? – didierc