Я смотрю на Advanced Linux Programming от Митчелла, Олдхэма и Самуила. Я видел в разделе о pthreads что-то о указателях пустоты и кастингах, которые меня смущают.
Передавая аргумент pthread_create(), они не накладывают указатель на указатель void, даже если это то, что ожидает функция.
pthread_create( &thread, NULL, &compute_prime, &which_prime );
Здесь, which_prime имеет тип int.
Но принимая значение, возвращаемое из потока с помощью pthread_join, они делают переменную переменной void.
pthread_join( thread, (void*) &prime );
Здесь prime имеет тип int снова.
Почему кастинг выполняется во втором экземпляре, а не в первом?