В настоящее время я работаю над проектом, использующим pthreads. До сих пор проект запускает указанное пользователем количество потоков и затем выполняет некоторую работу над каждым потоком. Каждый поток хранится в динамически распределенном массиве памяти. Я делаю это с помощью:pthread Возвращаемые значения в массив
threads = malloc(number_of_threads * sizeof(pthread_t));
Затем я создаю каждую нить для цикла:
pthread_create(&(threads[i]), NULL, client_pipe_run, (void *) ¶m[i]);
Что мне нужно делать дальше сохранять возвращаемые значения этих потоков. Я понимаю, что мне нужно передать pthread_join адрес указателя, в котором я хочу получить возвращаемое значение. Здесь я немного запутался. Я в порядке с указателями до этого момента, тогда мой мозг имеет плавную ха-ха. Это моя идея о том, как добиться этого, но я не уверен, что это правильно:
int *return_vals = malloc(sizeof(int) * number_of_threads);
for(i = 0; i< number_of_threads; i++)
{
pthread_join(&(threads[i]),(void *) &(return_vals[i]));
}
Затем, чтобы получить возвращаемое значение, я бы сделать что-то похожее на:
int val = *(return_val[0]);
Любая помощь на это было бы очень признательно!
У вас есть вопрос: http://stackoverflow.com/questions/2251452/how-to-return-a-value-from-thread-in-c – zzk