LINUX.ORG.RU

pthread_detach


0

0

Привет. Имею такой код:

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(), то второй
поток будет радостно крутиться до бесконечности, а вот в коде, который
здесь приведен, он печатает примерно строчек двадцать (когда как), и программа
после этого завершается. Почему?

Большое человеческое спасибо.

Как это почему. Из main выходим и завершаются все потоки процесса. Иначе надо юзать fork.

kpanic ★★
()
Ответ на: комментарий от kpanic

а всегда ли нужно использовать
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
и
pthread_attr_destroy(&attr);
чтобы ждать возврат нити? Или если у них нет общих ресурсов, то пусть себе работает?
И что будет если, программа закончилась, а тред там продолжает себе работать?
Кто его убьёт? И каким образом?

vaborg ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.