我有一个如下所示的函数,我把它传递给pthread_create。我已经阅读了很多帖子并在我的代码上实现了它们,但是我仍然无法返回值。
void *threaded_FFT(void* arg) {
struct arg_struct *data = (struct arg_struct *)arg;
data->base = data->fft->in;
for(i=0;i<N;i++){
data->base[i].re = data->input[i]; data->base[i].im =0.0;
}
usleep(1);
gpu_fft_execute(data->fft);
data->base = data->fft->out;
for(i=0;i<N;i++){
data->output[i]= sqrt(((data->base[i].re)*(data->base[i].re))+((data->base[i].im)*(data->base[i].im)));
}
return (void *)data->output;
}
当我添加printf行以显示data-&gt; output [0 ... N]时,我可以清楚地看到它们具有正确的值,表明函数正常工作。
我在我的主要功能
中尝试这个void *outData;
...
pthread_join(threads[],&outData);
...
printf("%f\n",(float *)outData);
这总是返回值0.000000
答案 0 :(得分:2)
printf("%f\n",(float *)outData);
%f
需要浮点值,而不是指针。这可能有效:
printf("%f\n", ((float *)outData)[0]);
您尚未发布类型定义,因此不清楚outData
是否实际指向float
值。