Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 从Pthread返回值_C_Pthreads - Fatal编程技术网

C 从Pthread返回值

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

我有一个如下所示的函数,我将它传递给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; 
}   
这总是返回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]开始之前返回一个值。