这让我很惊讶。
static int ret = 50;
void * thread_func(void *arg)
{
pthread_exit(&ret);
}
int main(void)
{
pthread_t thr;
int *exit_status;
pthread_create(&thr, NULL, thread_func, NULL);
sleep(2);
pthread_join(thr, (void **)&exit_status);
printf("value of exit status - %d\n", *exit_status);
ret = 20;
pthread_join(thr, (void **)&exit_status);
printf("value of exit status - %d\n", *exit_status);
return 0;
}
输出是
value of exit status - 50
value of exit status - 20
我期望 exit_status 两次都是线程的实际退出值(在我的情况下为 50)。相反,它只是返回我用于 pthread_exit 的全局变量的值。这不是一个错误吗?