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

Using pthread in c++ to find max of array

本文关键字:查找 数组 最大值 pthread c++      更新时间:2023-10-16

;我正在尝试使用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-在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;
}