void Thread::run()
{
forever {
mutex.lock();
if (stopped) {
stopped = false;
mutex.unlock();
break;
}
mutex.unlock();
std::cerr << qPrintable(messageStr);
}
std::cerr << std::endl;
}
void Thread::stop()
{
mutex.lock();
stopped = true;
mutex.unlock();
}
stopped � una variabile booleana settata falsa da Thread::Thread().
Non ci ho capito molto :-(
Potreste aiutarmi?
Grazie!
Armando
nella funzione run(), che devi immaginare eseguita in un altro thread,
si controlla, in un loop infinito, il valore della variabile "stopped".
Se � false, non viene eseguito il break e pertanto viene stampato un
messaggio a video. Se � true, viene eseguito il break e la funzione poi
termina (e con essa il thread).
In stop, viene imposto il valore della variabile a true. Questa funzione
pu� essere chiamata all'interno di run(), volendo, o da un altro thread.
Lock/unlock vari servono solo per non accedere alla variabile stopped
contemporaneamente da due thread distinti.
void Thread::giustoPerCapire()
{
mutex.lock();
..
..
..
mutex.unlock();
}
All'atto dell'esecuzione dell'istruzione mutex.lock() la funzione
giustoPerCapire() impedisce l'esecuzione di qualunque altra funzione
membro di Thread da parte di un altro thread e l'accesso a qualunque
variabile membro di Thread da parte di un altro Thread?
O esclude solo la possibilit� che la parte di codice compresa tra le
chiamate lock e unlock sia eseguibile da pi� thread contemporaneamente?
Grazie ancora!
Armando
la seconda che hai detto :-)