int pthread_join(pthread_t thread, void **retval);
void pthread_exit(void *retval);
在 pthread_exit 调用中,我们传递了一个指向我们必须传递的值的指针。在 pthread_join 中,根据手册页,它应该是指向指针的指针。我不相信它。当我使用指向 char 的指针时,我是得到预期的结果。但是当我使用如下所示的 int 时,我得到了一个垃圾值。这个实现是否正确?
void * sum(void * id)
{
int n = *(int *)id;
pthread_exit((void *)&n);
}
void main()
{
pthread_t t1;
int *s;
s = malloc(sizeof(int));
int num;
num=5;
pthread_create(&t1,NULL,sum,(void *)&num);
pthread_join(t1,(void **)&s);
printf("returned %d \n",*s);
pthread_exit(NULL);
}