Comment savoir si un pthread est mort
Comment peut-on savoir si un pthread est mort?
Est-il un moyen de vérifier un pthreads statut?
Il convient de noter que les threads ne peuvent pas juste "mourir". Les seuls moyens d'un fil peut être résilié sans que l'ensemble du processus de cessation sont: (1) son retour de la fonction de démarrage, (2) l'appel
pthread_exit
, (3) l'appel d'une fonction qui est une annulation point, alors que l'annulation n'est pas bloqué et pthread_cancel
a été appelée sur elle, ou (4) d'être la cible de pthread_canel
tout en annulation asynchrone est en vigueur.
OriginalL'auteur jarryd | 2011-04-23
Vous devez vous connecter pour publier un commentaire.
Voir: pthread_kill
Partir du lien ci-dessus: "Comme dans kill(), si le sig est de zéro, l'erreur de la vérification doit être effectuée, mais pas de signal doivent être effectivement envoyé". Ce qui signifie non, il ne va pas tuer le fil. Il va juste vous dire qu'il est toujours là.
Merci BEAUCOUP pour cette ! 😉
Btw, est-ce "the_thread' le nom du thread, le thread actuel? ou est-ce la valeur de retour du thread? par exemple, gpsNavigationThreadResult = pthread_create(&gpsNavigationThread, NULL, setupgpsnavigation, (void*) message3);
Ce code n'est valide que si
the_thread
est joignable et qui n'est pas encore rejoint. Si elle était déjà rejoint ou si il a été détaché, puis toute utilisation de son identifiant du thread, y compris avecpthread_kill
, après sa durée de vie, les résultats de très dangereux un comportement indéfini.OriginalL'auteur Damon
Si vous n'avez pas besoin d'écrire une application portable et peut utiliser des extensions GNU, vous pouvez utiliser
pthread_tryjoin_np
. Je crois que il n'y a pas d'autre moyen de le faire, sauf pour la mise en place de la communication entre deux threads (par exemple à l'aide d'un mutex global, qui est tenue par un fil, tant qu'il est vivant).OriginalL'auteur evnu
Je tiens à ajouter à la discussion le fait qu'un thread peut mourir dans une autre affaire qui n'est pas mentionné ici, dans le cas d'un signal comme signal SIGPIPE quand elle n'est pas traitée par le processus d'hébergement ou le fil de soi et dans les situations où un tel signal peut survenir
OriginalL'auteur cod3r43v3r