а не join()?
А с чего деструктор должен лочить вызывающий тред если девелопер явно это не запросил?
Ну, чтобы все вызвали join Детерминировано, а не неявно был в деструкторе join. Это и к дедлокам может приводить.
Но вроде там исключение кидаться должно, а не join
The reason to moving to std::terminate is that either implicitly detaching or joining a joinable() thread in its destructor could result in difficult to debug correctness (for detach) or performance (for join) bugs encountered only when an exception is raised. Thus the programmer must ensure that the destructor is never executed while the thread is still joinable. Join the thread before destroying or use a scoped thread. из документации буста
Обсуждают сегодня