【问题标题】:Find max number in 2d array with thread使用线程在二维数组中查找最大数
【发布时间】:2012-02-24 11:57:33
【问题描述】:

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

【问题讨论】:

  • 首先,您应该发布一些您尝试过但对您不起作用的代码。
  • i cant wait for any thread to complete with pthread_join 是什么意思?

标签: c arrays multithreading pthreads


【解决方案1】:

据我了解,您希望将 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,这样你才能知道所有线程都完成了它们的工作。

【讨论】:

    猜你喜欢
    • 2017-04-03
    • 1970-01-01
    • 2015-04-06
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    • 1970-01-01
    • 2019-03-31
    • 2015-10-11
    相关资源
    最近更新 更多