Le operazioni che il thread deve effettuare sono abbastanza semplici:
void* row_sum(void* arg) {
struct thread_info *this_info;
int i, partial_sum=0;
int status = 0;
this_info = (struct thread_info *)arg;
printf("Thread %d: letti i dati di input.\n",this_info->thread_id);
close(this_info->pipe_fd[0]);
for (i=0; i<N; i++) {
partial_sum += this_info->row[i];
printf("Somma parziale thread %d: %d\n",this_info->thread_id,partial_sum);
}
if (write(this_info->pipe_fd[1], &partial_sum, sizeof(int))==-1) {
printf("Thread %d: errore durante la write.\n", this_info->thread_id);
status = -1;
}
close(this_info->pipe_fd[1]);
pthread_exit((void*)&status);
}