Linux ID de processus et l'ID de thread

Supposons que nous avons à l'utilisateur de nombreux processus en cours d'exécution sur Linux. Chaque processus dispose de nombreux threads en cours d'exécution.

Je peux obtenir l'ID de processus en appelant getpid(), la valeur de retour est un nombre entier.

Je peux obtenir l'ID de thread en appelant pthread_self(), la valeur de retour de ce qui est opaque type appelé pthread_t.

Maintenant, j'ai besoin de stocker l'ID de processus (un int, 4 octets en général) et l'ID de thread (pthread_t, besoin de comprendre combien d'octets) en mémoire partagée, de sorte que je peux l'utiliser plus tard les deux pièces d'identité de l'information pour identifier ce thread spécifique et de vérifier si le fil est toujours en cours d'exécution ou non.

J'ai trouvé beaucoup de sources en ligne cast pthread_t soit unsigned int ou unsigned long. Depuis que je ne veux pas de perte de données lors de la coulée, comment dois-je traiter avec les pthread_t de données de sorte que c'est une taille fixe morceau de données (comme mentionné, j'ai besoin de stocker le fil de l'information dans la mémoire partagée).

Aussi, comment dois-je identifier ce thread spécifique par la combinaison de processus ID et l'ID de thread plus tard? Comment vérifier si le fil est toujours en cours d'exécution ou non?

Id de processus et thread Id peuvent être réutilisés, je crois donc que l'ensemble de votre approche est erronée...
Vous êtes de droite. Supposons différents processus et les threads de toujours avoir des Identifiants différents pour séparer les préoccupations.

OriginalL'auteur Terry Li | 2011-12-19