std::thread::joinをスレッドの終了待ちに使えるのはごく限られた単純なケースだけだから
こんなのはPOSIXスレッドを使ったことがあれば常識