Назад к вопросамЧто произойдёт, если
JuniorТеорияОчень часто
Что произойдёт, если std::thread уничтожить без join или detach?
#include <iostream>
#include <thread>
void greet() {
std::cout << "hi\n";
}
int main() {
std::thread t(greet);
}Программа аварийно завершится через std::terminate: у t не вызвали ни join, ни detach
- Ждать, что деструктор вызовет
join(): так делаетstd::jthread, аstd::thread, уничтоженный безjoin()иdetach(), вызываетstd::terminate. - Ждать автоматического
detach(): такой поток мог бы пережить данные, с которыми работает, поэтому деструктор вместо этого вызываетstd::terminate.
- Чем здесь помогает
std::jthread? - Когда
detachдопустим?