gpt4 book ai didi

c - pthread_join 从数组中的函数接收结果

转载 作者:行者123 更新时间:2023-11-30 17:54:57 25 4
gpt4 key购买 nike

我正在使用 C 语言的 pthreads 工作,并且再次遇到了问题。我正在尝试将结果作为函数数组发送到我的主线程。

此代码查找每个工作人员的最大值(1 个工作人员/行)并保存该值的索引。到目前为止,一切都很好。我将在这个函数下面解释我的问题。这段代码满足了我的要求。

for (i = first; i <= last; i++){
for (j = 0; j < size; j++){
total += matrix[i][j];
if(matrix[i][j] > biggest){
biggest = matrix[i][j];
x=i;
y=j;
maxValueResult[1]=i;
maxValueResult[2]=j;
}else if(matrix[i][j] < smallest){
smallest = matrix[i][j];
indexes[2]=i;
indexes[3]=j;
}
}
}
maxValueResult[0]=biggest;
maxValueResult[1]=x;
maxValueResult[2]=y;
printf("Results: maxValue: %d cord[%d,%d]\n",maxValueResult[0],maxValueResult[1],maxValueResult[2]);

return *maxValueResult;

我的问题是,当我在 pthread_join 中收到结果时,只有 maxValueResult[0] 有效,从 maxValueResult[1] 和 maxValueResult[2] 我只能获取地址或其他内容。之前:“返回*maxValueResult;”所有三个值都是正确的,看起来像这样:“结果:maxValue:95 cord[3,3]”

这是我调用 pthread_join 的地方:

for(l=0;l<numWorkers;l++){
pthread_join(workerid[l], &maxValue);
temp[l] = maxValue[0];
if(maxValue[0]<temp[1]){
maxValue[0] = temp[1];
xCORD = maxValue[1];
yCORD = maxValue[2];
}
}
printf("Results: maxValue: %d cord[%d,%d]\n",maxValue[0],xCORD,yCORD);

打印出这个:“结果:maxValue:95 cord[0,1629976061]”,其中 95 是正确的,但其他两个不是。我可以做什么来解决这个问题?正如您可能从我的代码中看到的,我经验不足。

编辑:我忘了告诉警告,我收到了几个警告!不幸的是,它们是瑞典语的,但我还是将它们发布在这里:“$ gcc -o sumb 矩阵SumB.cMatrixSumB.c:在 funkcion“main”中:matrixSumB.c:120:1:警告:从不兼容的指针类型传递“pthread_join”的参数 2/usr/include/pthread.h:144:5:注意:预期为“void **”,但参数类型为“int * (*)[3]”matrixSumB.c:在函数“Worker”中:MatrixSumB.c:172:1:警告:返回使指针来自整数而不进行强制转换。”

亲切的问候利奥

最佳答案

你尝试过吗

return maxValueResult[0];
return maxValueResult[1];
return maxValueResult[2];

关于c - pthread_join 从数组中的函数接收结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14647123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com