pthread_join() et pthread_exit()
J'ai une question à propos de C de la simultanéité de la programmation.
Dans la bibliothèque pthread, le prototype de pthread_join
est
int pthread_join(pthread_t tid, void **ret);
et le prototype de pthread_exit
est:
void pthread_exit(void *ret);
Donc je suis confus, pourquoi pthread_join
prend la valeur de retour du processus comme un pointeur vers un void
pointeur de récolté thread, mais pthread_exit
ne prend void
pointeur de la sorti de fil? Je veux dire, en gros, ils sont tous de retour de valeurs à partir d'un fil, pourquoi il y a une différence entre le type?
Vous devez vous connecter pour publier un commentaire.
Dans
pthread_exit
,ret
est un paramètre d'entrée. Vous êtes tout simplement en passant l'adresse d'une variable à la fonction.Dans
pthread_join
,ret
est un paramètre de sortie. Vous recevez en retour une valeur de la fonction. Une telle valeur peut, par exemple, être mis àNULL
.Longue explication:
Dans
pthread_join
, vous recevez en retour l'adresse passée àpthread_exit
par le fini de fil. Si vous passer juste un simple pointeur, il est passé par valeur, de sorte que vous ne pouvez pas changer de où il pointe. Pour être en mesure de modifier la valeur du pointeur est passé à pthread_join, il doit être passé comme un pointeur lui-même, qui est un pointeur vers un pointeur.pthread_exit
unvoid *
type, il a toujoursNULL
ou certains autres valeurs constantesParce que chaque fois
va être appelée à partir de la fonction de thread si jamais vous voulez revenir simplement son pointeur de passer avec pthread_exit().
Maintenant à
sera toujours appelé à partir d'où thread est créé voici donc à accepter que le pointeur retourné vous avez besoin double pointeur ..
je pense que ce code va vous aider à comprendre ce
L'utilisation typique est