Для того, чтобы перехватить возвращаемое значение дочернего потока в родительском (чтение как основной) поток.
Вы должны:
1) Соедините дочерние нити с основной нитью. Таким образом, основной поток остается и ждет, пока дочерние потоки выполнят свою работу и завершат работу.
2) Поймать возвращаемое значение дочернего потока при выходе. Дочерний поток должен вызвать pthread_exit (& ret_val), где ret_val содержит выходное значение функции (дочерний поток выполнялся)
Информация:
int pthread_join(pthread_t thread, void **rval_ptr);
void pthread_exit(void *rval_ptr);
Пояснение:
* Основная функция: *
После pthread_create присоединитесь к дочернему потоку:
pthread_join(thread_id, (void**)&(p_ret_val_of_child_thread));
Функция обработки дочерней резьбы:
ret_val_of_child_thread = 10;
pthread_exit(&ret_val_of_child_thread);
} /* Child Thread Function Handler Ends */
Основная функция:
После того, как дочерний поток завершит выполнение, можно получить его возвращаемое значение в основном потоке из "* (допустимый тип *) * p_ret_val_of_child_thread"
Второй аргумент pthread_join содержит возвращаемое значение выходного значения обработчика функции дочернего потока.