gpt4 book ai didi

c - 将结构中的结构传递给 pthread_create

转载 作者:行者123 更新时间:2023-11-30 14:48:25 25 4
gpt4 key购买 nike

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

    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)这是可以预料的,但我不知道如何以这种方式修复它?感谢您的提示!

最佳答案

嗯,Parameter[i]struct param 类型,尽我所能,它不能强制转换为 C 中的 void *知识,所以你可能想实际传递它的地址,它是

Parameter + i

&Parameter[i]

关于c - 将结构中的结构传递给 pthread_create,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50417300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com