在c++中使用pthread查找数组的最大值
Using pthread in c++ to find max of array
;我正在尝试使用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;
}
相关文章:
- 查找数组中第一个最小值和最后一个最大值元素之间的算术平均值
- 需要使用模板查找数组的第二个最小和最小值
- 用于查找数组中最大元素的出现次数的代码,给出分段错误
- 查找数组中指示性较大但数组中值较小的元素
- C++ 函数,用于查找数组中四个最小最大元素的总和不起作用
- 查找数组中的最小数字
- 查找数组中重复(重复)数字的索引
- 使用一个内存集数组和单个堆栈在 O(n) 中查找数组的下一个更大元素
- 查找数组中给定数字的出现次数
- 使用 std::累加来查找数组的总和
- 代码以查找数组中的最大数字,但它仅将第一个数字显示为最大数字. 有人请告诉我为什么
- 在不进行排序的情况下查找数组中n个最小值的索引
- 当数组在C++中用作参数时,查找数组的元素数
- 查找数组中数组元素的重复出现?
- 查找数组最后 3 个数字的平均值
- 查找数组中是否存在C++元素
- 查找数组中的最小更改数以进行 k 算术级数
- 查找数组的第一个和最后一个索引,其中 from 和 to 元素的顺序总和最大
- 有没有办法在递归中使用指针来查找数组的最小值?
- 在编写代码以查找数组中的对数时获取分段错误