Is it possible to set a timeout for a call to std::thread::join()? I want to handle the case in which the thread is taking too long to run, or terminate the thread. I may be doing this for multiple threads (say, up to 30).
Preferably without boost, but I’d be interested in a boost solution if that’s the best way.
There is no timeout for
std::thread::join(). However you can viewstd::thread::join()as merely a convenience function. Usingcondition_variables you can create very rich communication and cooperation between your threads, including timed waits. For example:In this example
mainlaunches several threads to do work, all of which occasionally check if it is time to quit under a mutex (this could also be an atomic). The main thread also monitors if it is time to quit (if the threads get all their work done). If main runs out of patience, he just declares it to be time to quit, then waits for all threads to perform any necessary clean up before exiting.