Безопасно ли отсоединить поток, а затем позволить ему выйти за пределы области действия (и продолжать работать)?C++

Программы на C++. Форум разработчиков
Anonymous
Безопасно ли отсоединить поток, а затем позволить ему выйти за пределы области действия (и продолжать работать)?

Сообщение Anonymous »

У меня есть следующий код, который, я думаю, работает нормально (простите за глупый/надуманный пример).

Код: Выделить всё

void run_thread()
{
std::thread t([]{
while(true)
{
// keep getting chars... to stop peoples eye's hurting : )
char c = getchar();
}
});

t.detach(); // Detach thread

// thread goes out of scope here - but is it ok because its detached??
}

int main()
{
run_thread();

// Wait here forever
while (true) {;}
}
Но, перечитав, у меня возникли сомнения по этому поводу. Поток t выходит за рамки. Сейчас я не могу вспомнить, безопасно ли это делать после того, как вы вызвали detach()... Я думаю, что да, но, как я уже сказал, меня мучает сомнение. Может ли кто-нибудь подтвердить, хорошая это или плохая практика?

Подробнее здесь: https://stackoverflow.com/questions/505 ... e-it-still

Вернуться в «C++»