До недавнего времени у меня создалось впечатление, что если вы "отсоединяете" поток после его нереста, поток живет даже после завершения "основного" потока.
Но небольшой эксперимент (перечисленный ниже) противоречит моей вере. Я ожидал, что отдельная нить будет продолжать печатать "Говорить из отсоединенной нити" даже после того, как основной закончен, но это, похоже, не происходит. Приложение, по-видимому, заканчивается...
Отсоедините "отсоединенные" нити после "основных" проблем return 0?
#include <pthread.h>
#include <stdio.h>
void *func(void *data)
{
while (1)
{
printf("Speaking from the detached thread...\n");
sleep(5);
}
pthread_exit(NULL);
}
int main()
{
pthread_t handle;
if (!pthread_create(&handle, NULL, func, NULL))
{
printf("Thread create successfully !!!\n");
if ( ! pthread_detach(handle) )
printf("Thread detached successfully !!!\n");
}
sleep(5);
printf("Main thread dying...\n");
return 0;
}