I have a question/doubt about the following snippet given n the book “C++ concurrency”. I want to know is there a technical reason(s) for putting the t.join()
after the try catch block instead of putting it inside the try block.
//callable whose defintion is not related to this question
struct my_func;
void f()
{
int some_local_state = 0;
func my_func(some_local_state);
std::thread t(my_func);
try {
do_something_in_current_thread();
//can we put/move the t.join() here? instead of having it at point #2
} catch (...) {
t.join();
throw;
}
//author put the t.join() here why not inside try block
t.join(); //#2
}
As you can see, the author has placed the t.join()
at point #2
. But I want to know why don’t we just place it inside the try
block itself, just after the call to do_something_in_current_thread()
. I mean, are there any technical cases/advantages of placing it at #2
instead of inside the try
block that I may not be aware of as I’ve just started learning multi-threading.
As a beginner I can’t think of any case/advantage of having it at #2
instead inside try block.