il seguente:C++ 11: Cosa succede se non si chiama join() per std :: filo
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
uscirà dopo 5 secondi, che cosa accadrà a th1
che è ancora in esecuzione?
Continua l'esecuzione fino al completamento anche se l'oggetto filetto th1
definito in main
esce dall'ambito e viene distrutto?
si trova semplicemente lì dopo il completamento dell'esecuzione o in qualche modo viene ripulito quando termina il programma?
Cosa succede se il thread è stato creato in una funzione, non main
- il thread rimane in attesa finché il programma non termina o quando la funzione non rientra nell'ambito?
È sicuro semplicemente non chiamare join
per un thread se si desidera un qualche tipo di comportamento di timeout sul thread?
Perché non ci provi? – Drop
@Drop Perché non è un modo affidabile per conoscere le * garanzie *. – dyp
@dyp non sta chiedendo Stackoverflow. Compilando e gestendo questo esempio a 5 linee, almeno riusciva a trovare un indizio. C'è solo una fonte di garanzie: uno standard. – Drop