Por que o segundo argumento para pthread_join () é um **, um ponteiro para um ponteiro?

Eu sou novo em usarpthread e também não familiarizado com ponteiros para ponteiros. Alguém poderia talvez explicar por que o segundo argumento depthread_join() é umvoid **. Por que é projetado assim.

int pthread_join(pthread_t thread, void **value_ptr);