pthread_detach question

Jusqu'à récemment, j'étais sous l'impression que si vous "détacher" un fil après la ponte, le fil de vie, même après le "principal" thread se termine.

Mais un peu d'expérience (voir ci-dessous) est contraire à mes convictions. Je m'attendais à le détacher de la ficelle pour maintenir l'impression de "Parler de l'détaché fil" même après la principale terminée, mais cela ne semble pas être le cas. L'application se termine apparemment...

Faire de la "détaché" fils meurent après le "principal" questions 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;
}
Ce n'est pas une bonne idée de sortie le thread principal tandis que les autres threads sont en cours d'exécution; dans tous les cas, le retour de la fonction main() va entraîner d'autres threads d'être tué de toute façon.

OriginalL'auteur puffadder | 2011-05-18

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *