在c ++中使用pthread来查找数组的最大值

时间:2014-10-19 22:50:10

标签: c++

;我正在尝试使用pthread.h库来查找数组中的最小数字。我无法编译代码,也不熟悉如何正确使用指针使其工作。

#include <iostream>
#include <pthread.h>
using namespace std;

int *min;
int *max;
double *average;
int n;

void* minimum(void* a){
  int size = n;
  int* array = (int*) a;
  int tempmin = array[0];
  for(int i=0; i<size; i++){
    if(array[i] < tempmin){
      tempmin = array[i];
    }
  }
  return NULL;
}

int main(){

int in;

cout << "How many numbers would you like to enter?" << endl;
cin >> n;
int numbers[n];
  for(int i=0; i<n; i++){
      cout << "enter number " << i+1 << endl;
      cin >> in;
      numbers[i] = in;
    }

pthread_t thread1;
int iret1

pthread_create(&thread1, NULL, &minimum, (void*)numbers);
}

1 个答案:

答案 0 :(得分:2)

我假设这只是一个练习,因为有更好的方法来实现你想要的。请阅读this link。所以这里有一些要注意的地方:

1 - 在pthread_create之后,你应该调用pthread_join来等待它完成并释放它的资源(你也可以创建一个分离的线程)。您还需要将数组作为参数传递给线程:

pthread_create(&thread1, NULL, &minimum, (void*)numbers);
pthread_join(thread1, NULL);

2 - 线程函数收到一个void *,所以你需要将它转换为参数的真实值:

void* minimum(void* a){
  int size = n;
  int* array = (int*) a;
  int tempmin = array[0];
  for(int i=0; i<size; i++){
    if(array[i] < tempmin){
      tempmin = array[i];
    }
  }
  return NULL;
}