我想为2D数组的每一行创建一个线程。然后每个线程应该找到给定行中的最大值,但我不能等待任何线程完成pthread_join
。那我该怎么办?
答案 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
,以便你知道所有线程都已完成他们的工作。