Насколько я понимаю, вы хотите разделить 2D-массив на 1D-массивы и передать их потокам, но вы не знаете, что делать, когда каждый из этих потоков находит максимум в своем "собственном" массиве - а Я не хочу передавать это значение в pthread_exit()
и получить его по pthread_join()
в главном потоке.
Вы можете использовать глобальный массив, управляемый основным потоком, для хранения этих значений. Вот идея (псевдокод):
int* max; // global
thread(...){
int localMax = 0;
...
max[rowIndex] = localMax;
}
// main thread:
max = malloc (rowCount * sizeof(int));
...
free(max);
Каждый поток находит локальный максимум localMax
в данном массиве (строке) и сохраняет его в массиве max
.
Но в конце вам придется использовать pthread_join
, чтобы вы знали, что все потоки закончили свою работу.