我已经看到了许多并行编程代码,例如查找数组的最大值,矩阵乘法等。使用指针。我不明白为什么要使用它。示例:(shseg+(offset*sizeof(float))) = sum;
矩阵乘法的代码:
shseg = shmat(handle,NULL,0);
for(row=SIZE/2;row<SIZE;row++){
for(column=0;column<SIZE;column++){
sum = 0;
for(tindex=0;tindex<SIZE;tindex++){
sum+=a[row][tindex]*b[tindex][column];
}
*(shseg+(offset*sizeof(float))) = sum;
offset++;
}
}
谁能解释为什么使用指针?
最佳答案
这是因为您显示的示例使用共享内存API,该API为您提供了平坦的内存块,而不是浮点数组。因此,您需要手动进行所有指针操作。
您还可以将共享指针转换为float*
并使用索引,如下所示:
shseg = shmat(handle,NULL,0);
float *fshseg = (float*)shseg;
...
fshseg[index++] = sum;