Привет. Имею такой код:
void* ua_main_thrd(void* arg)
{
for (;;)
printf("This is detached thread...\n");
}
int main()
{
pthread_t tid;
pthread_create(&tid, NULL, ua_main_thrd, NULL);
pthread_detach(tid);
return 0;
}
Если не отсоединять поток, а, напротив, ждать его потом pthread_join(), то второй
поток будет радостно крутиться до бесконечности, а вот в коде, который
здесь приведен, он печатает примерно строчек двадцать (когда как), и программа
после этого завершается. Почему?
Большое человеческое спасибо.
а всегда ли нужно использовать
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
и
pthread_attr_destroy(&attr);
чтобы ждать возврат нити? Или если у них нет общих ресурсов, то пусть себе работает?
И что будет если, программа закончилась, а тред там продолжает себе работать?
Кто его убьёт? И каким образом?