Stop all threads
-
I need to complete the work threads before closing the application. I have done so:
@
connect(quitAction, SIGNAL(triggered()), this, SLOT(quit()));...........
void MainWindow::quit()
{
thread_update_base.exit();
thread_update_base.wait();
qApp->quit();
}
@So it will be correct in terms of security? If not, please show how to correctly stop all threads.
-
It depends on what is going on in thread_update_base.
Your code does not look bad actually. You stop the event loop and then you politely wait.
However you need to ask yourself if your thread needs additional cleanup and if it is ok to stop the thread on termination of any method which happens to run when you call exit().
If you do not have an objection go ahead. Otherwise it is better to send a signal to the worker thread, pick the signal up, do the cleanup and then you exit(). -
If you have more than one thread to terminate, keep in mind that terminating one thread might trigger som event to be handled by another one...
To keep it simple, I would advise to keep a drawing of interaction, to know in which order terminate and when to wait. Definitely, not as easy as it sounds :-)