Мне интересно, что именно параметр "status" в pthread_join предназначен для
int pthread_join(pthread_t thread, void **status);
Я пытаюсь использовать это, но я не могу понять, что именно оно представляет.
Согласно документации
статус
Is the location where the exit status of the joined thread is stored.
Это может быть установлено в NULL, если выход
статус не требуется.
OK. Звучит неплохо. Как мне это использовать? Я посмотрел на некоторые примеры, но я не могу
освоить его (и некоторые примеры совершенно неверны при его использовании). Итак, я пошел в
источник. В реализации glibc я нашел следующий тест для pthread_join:
...
pthread_t mh = (pthread_t) arg;
void *result;
...
if (pthread_join (mh, &result) != 0)
{
puts ("join failed");
exit (1);
}
here follows the WTF moment ...
if (result != (void *) 42l)
{
printf ("result wrong: expected %p, got %p\n", (void *) 42, result);
exit (1);
}
Значит, значение результата (который является адресом) должно быть 42 ?? Это что-то глобальное
на уровне библиотеки, потому что я не смог найти ничего конкретного в тесте ?
РЕДАКТИРОВАТЬ: кажется, этот вопрос предоставляет информацию, связанную с тем, что я спросил