C pthread_join valeur de retour
Je suis d'essayer d'imprimer une valeur de retour à partir de pthread_join. J'ai le code suivant:
for(j = 0 ; j < i ; ++j){
pthread_join( tid[j], returnValue); /* BLOCK */
printf("%d\n", (int)&&returnValue);
}
Tous les threads sont stockés dans le tid tableau et sont créés et retournés correctement. À la fin de chaque fonction de thread, j'ai la ligne suivante:
pthread_exit((void *)buf.st_size);
Je suis de la tentative de retour de la taille de certains fichiers que je lisais. Pour une raison que je ne peut pas l'obtenir pour imprimer la valeur correcte. Il est plus que probable que la façon dont j'essaie de déréférencer le void ** à partir de la pthread_join appel de fonction, mais je ne suis pas trop sûr de savoir comment aller à ce sujet. Merci d'avance pour toute aide.
OriginalL'auteur Night Train | 2012-11-09
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de passer l'adresse d'un
void *
variablepthread_join
-- il va se remplir avec la valeur de sortie:Utilisation
intptr_t
au lieu deint
pour obtenir un type entier, de la même taille comme un pointeur.La dernière ligne devrait être
printf("%d\n", *(int *)returnValue);
Non, ce serait probablement crash -- la valeur de sortie est un
off_t
qui a été jeté d'unvoid *
, si vous avez besoin de le jeter en arrière pour un type intégral, ne pas essayer de déréférencer le pointeur non valide.OriginalL'auteur Chris Dodd
Cela fonctionne:
OriginalL'auteur steal