вызывать под try-catch, потому что join есть, joinable есть, а способа сделать join-only-if-joinable нет никакого?
А if (t.joinable()) { t.join(); } недостаточно?
Ну тред, кажется, не может стать не joinable конкурентно с потоком, где пытаются сделать join()
То есть классической проверки if (t.joinable()) { t.join(); } , как выше показали, достаточно
Так ничто не мешает треду завершиться после проверки и до джойна. Тем более, что формально завершение кода функции, которую ты передал в тред это "неодновременные" операции.
joinable не про это
Это не делает его не joinable.
Не понял вот этого. Если я пишу код std::thread(callback_f).join(), то, если колобок придет пустым, кажется, ничто не мешает ему к моменту после старта, но перед джином завершиться. Я не вижу пока способа синхронизировать вызовы joinable и join.
Обсуждают сегодня