Необходим для проверки, связан ли объект потока с реальным потоком выполнения.
c
Основные причины:
join() или detach() на объекте std::thread, который не связан с потоком выполнения (!t.joinable()), приводит к неопределенному поведению.std::thread ресурсами реального потока и нужно ли их освободить (join() или detach()).std::thread новый поток только если предыдущий не был связан.