Ниже приводится:
void test()
{
std::chrono::seconds dura( 20 );
std::this_thread::sleep_for( dura );
}
int main()
{
std::thread th1(test);
std::chrono::seconds dura( 5 );
std::this_thread::sleep_for( dura );
return 0;
}
main
выйдет через 5 секунд, что произойдет с th1
, который все еще выполняется?
Продолжается ли выполнение до завершения, даже если объект потока th1
, который вы определили в main
, выходит из области действия и уничтожается?
Может ли th1
сидеть там после того, как он закончил выполнение или каким-то образом очистится, когда программа завершится?
Что делать, если поток был создан в функции, а не main
- работает ли поток до тех пор, пока программа не завершится или когда функция выходит из области видимости?
Можно ли просто не называть join
для потока, если вы хотите, чтобы какой-то тип тайм-аута в потоке?