将struct中的struct传递给pthread_create

时间:2018-05-18 18:29:53

标签: c pthreads

想要节省内存我有以下想法:

    struct data{

        double **A;
        double **B;
        double **C;
     };

    struct param{
        struct data *v; // A,B,C
        int n, i;
    };

void* runner( void* param) {return;}

int main(int argc, char **argv)
{

    int threads=10;

    int **A,**B,**C;

    struct data v;
    v.A=A;
    v.B=B;
    v.C=C;
    struct param *Parameter;
    Parameter=malloc(threads*sizeof(struct param*));

    for(int i=0;i<threads;i++)
    {
        Parameter[i].v=&v;
        Parameter[i].i=0;
        Parameter[i].n=threads;
    }


    pthread_t* threadNumber;

    threadNumber = malloc(sizeof(pthread_t)*threads);

    for (int i =0 ;i<threads;++i)
        pthread_create(&threadNumber[i],NULL,matrix_vector,(void*) Parameter[i]);


    for(int i=0;i<threads;++i)
        pthread_join(threadNumber[i],NULL);
return 0;
}

然而编译器说:100:9:错误:无法转换为指针类型 (在pthread_create中,参数4) 这是可以预料的,但我不知道如何以这种风格修复它? 感谢您的提示!

1 个答案:

答案 0 :(得分:1)

好吧,Parameter[i]属于struct param类型,据我所知,它对{C}中的void *不具有强制性,所以你可能想要实际传递其地址,这是任

Parameter + i

&Parameter[i]