2010-08-15 3 views
3

Lorsque nous créons des threads détachés dans main. et les sorties principales supose ... les threads détachés continuent-ils à fonctionner ou sortent-ils également comme nos threads Joinable normaux?Threads détachés

Répondre

1

Si ce serait un autre thread puis principal, les autres threads continueraient. Mais la norme C99 dit

Si le type de retour de la fonction principale est un type compatible avec int, un retour de l'appel initial à la principale fonction est équivalente à appeler la fonction de sortie ...

(Toutes les plates-formes communes de nos jours retourneront un int de main, en particulier est requis par POSIX.)

Et la page POSIX pour exit États

Ces fonctions mettent fin à l' processus appelant ...

Donc, en résumé un retour de main termine tout le programme, y compris toutes les discussions.

+0

Vous devriez citer quelle norme. Le texte que vous avez cité semble un peu étrange, puisque les versions actuelles de POSIX sont alignées avec C99 qui ** nécessite ** 'main' pour avoir un type de retour de' int'. –

+0

@R .: Non, vous vous trompez, C99 ne nécessite pas de retour de 'int'. Avec quelques mots bizarres à la fin du para pour 'main' il permet d'autres signatures. Et avec le para que je cite, il est clair que le retour non -int est une possibilité. –

4

Cela dépend entièrement de la sortie du fil principal. S'il quitte en utilisant exit() ou en revenant de main(), le processus entier est quitté et chaque thread est terminé. Toutefois, s'il utilise pthread_exit() pour se terminer, le processus continue à s'exécuter.