使用线程查找2d数组中的最大数量

时间:2012-02-24 11:57:34

标签: c arrays multithreading pthreads

我想为2D数组的每一行创建一个线程。然后每个线程应该找到给定行中的最大值,但我不能等待任何线程完成pthread_join。那我该怎么办?

1 个答案:

答案 0 :(得分:1)

根据我的理解,您希望将2D数组拆分为1D数组并将它们传递给线程,但是当这些线程中的每个线程在其自己的#34中找到最大值时,您都不知道该怎么做;数组 - 并且您不希望将此值传递给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,以便你知道所有线程都已完成他们的工作。