передача структуры в структуре в pthread_create - PullRequest
0 голосов
/ 18 мая 2018

желая сохранить память У меня была следующая идея:

    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 голосов
/ 18 мая 2018

Ну, Parameter[i] относится к типу struct param, который не принужден к void * в C, насколько мне известно, поэтому вы, вероятно, захотите передать его адрес на самом деле, который либо

Parameter + i

или

&Parameter[i]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...