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