C 从Pthread返回值
我有一个如下所示的函数,我将它传递给pthread_create。我已经读了很多文章,并在我的代码中实现了它们,但是我仍然无法返回值C 从Pthread返回值,c,pthreads,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
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;
}
这总是返回0.000000的值
printf("%f\n",(float *)outData);
%f
需要浮点值,而不是指针。这可能会奏效:
printf("%f\n", ((float *)outData)[0]);
您尚未发布类型定义,因此不清楚outData
是否实际指向float
值
%f
需要浮点值,而不是指针。这可能会奏效:
printf("%f\n", ((float *)outData)[0]);
您尚未发布类型定义,因此不清楚
outData
是否实际指向float
值试图打印指针,就像它是一个未定义的行为一样。尝试取消引用或索引。'return(void*)data->output;'可疑的强制转换…struct arg_struct*data=(struct arg_struct*)arg;
“什么是struct arg_struct
以及如何初始化传递给线程的内容也不需要在C中强制转换void
-指针。您不能只使用传递给线程的变量来打印结果吗?为什么要承担通过pthread\u join()
返回任何内容的负担?@alk我有两个线程在无限循环中工作。在我的程序中,我必须确保线程[0]结束并在线程[1]开始之前返回一个值。这是:printf(“%f\n”,(float*)outData)
试图打印指针,就像它是一个未定义的行为一样。尝试取消引用或索引。'return(void*)data->output;'可疑的强制转换…struct arg_struct*data=(struct arg_struct*)arg;
“什么是struct arg_struct
以及如何初始化传递给线程的内容也不需要在C中强制转换void
-指针。您不能只使用传递给线程的变量来打印结果吗?为什么要承担通过pthread\u join()
返回任何内容的负担?@alk我有两个线程在无限循环中工作。在我的程序中,我必须确保线程[0]结束并在线程[1]开始之前返回一个值。