Sous-routine pthread_exit
Objectif
Met fin à l'unité d'exécution appelante.
Bibliothèque
Bibliothèque d'unités d'exécution (libpthreads.a)
Syntaxe
#include <pthread.h>
void pthread_exit (status)
void *status;Descriptif
La sous-routine pthread_exit arrête l'unité d'exécution appelante en toute sécurité et stocke un statut d'arrêt pour toute unité d'exécution pouvant rejoindre l'unité d'exécution appelante. L'état de fin est toujours un pointeur vide ; il peut faire référence à n'importe quel type de données. Il n'est pas recommandé de transtyper ce pointeur en un type de données scalaire (int par exemple), car les transtypages peuvent ne pas être portables. Cette sous-routine n'est jamais renvoyée.
Contrairement à la sous-routine exit , la sous-routine pthread_exit ne ferme pas les fichiers. Par conséquent, tout fichier ouvert et utilisé uniquement par l'unité d'exécution appelante doit être fermé avant d'appeler cette sous-routine. Il est également important de noter que la sous-routine pthread_exit libère toutes les données spécifiques à l'unité d'exécution, y compris la pile de l'unité d'exécution. Toute donnée allouée sur la pile devient invalide, car la pile est libérée et la mémoire correspondante peut être réutilisée par une autre unité d'exécution. Par conséquent, les objets de synchronisation d'unité d'exécution (mutex et variables de condition) alloués sur la pile d'une unité d'exécution doivent être détruits avant que l'unité d'exécution n'appelle la sous-routine pthread_exit .
Le renvoi à partir de la routine initiale d'une unité d'exécution appelle implicitement la sous-routine pthread_exit , en utilisant la valeur de retour comme paramètre.
Si l'unité d'exécution n'est pas déconnectée, ses ressources, y compris l'ID d'unité d'exécution, le statut d'arrêt, les données spécifiques à l'unité d'exécution et son stockage, sont toutes conservées jusqu'à ce que l'unité d'exécution soit déconnectée ou que le processus soit arrêté.
Si une autre unité d'exécution rejoint l'unité d'exécution appelante, celle-ci se réveille immédiatement et l'unité d'exécution appelante est automatiquement déconnectée.
Si l'unité d'exécution est déconnectée, les routines de nettoyage sont lancées à partir de leur pile et exécutées. Ensuite, les routines de destructeur des données spécifiques à l'unité d'exécution sont exécutées. Enfin, la mémoire de l'unité d'exécution est récupérée et son ID est libéré pour être réutilisé.
L'arrêt de l'unité d'exécution initiale par l'appel de cette sous-routine n'arrête pas le processus, elle arrête simplement l'unité d'exécution initiale. Toutefois, si toutes les unités d'exécution du processus sont arrêtées, le processus est arrêté en appelant implicitement la sous-routine exit avec le code retour 0 si la dernière unité d'exécution est déconnectée, ou 1 dans le cas contraire.
Paramètres
| Article | Descriptif |
|---|---|
| status | Pointe vers un statut de fin facultatif, utilisé en joignant des unités d'exécution. Si aucun statut de fin n'est souhaité, sa valeur doit être NULL. |
Valeurs renvoyées
La fonction pthread_exit ne peut pas revenir à son appelant.
Erreurs
Aucune erreur n'est définie.
La fonction pthread_exit ne renvoie pas le code d'erreur EINTR.