从Pthread返回值

时间:2017-07-31 07:59:16

标签: c pthreads

我有一个如下所示的函数,我把它传递给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

1 个答案:

答案 0 :(得分:2)

printf("%f\n",(float *)outData);

%f需要浮点值,而不是指针。这可能有效:

printf("%f\n", ((float *)outData)[0]);

您尚未发布类型定义,因此不清楚outData是否实际指向float值。