gpt4 book ai didi

c - 将参数传递给线程

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

我有这个结构:

#define NUM_T 5

typedef struct {
int j;
int vetor[BUFFER_SIZE];
} estrutura_main;

我想将其作为参数传递给线程:

estrutura_main structure;
for(i=0;i<NUM_T;i++){
structure.j=i;
pthread_create(&threads[i], NULL, sum,(void*)&structure);
}

我的问题是,当我在函数sum中访问j时,它总是4,并且每次都应该是一个不同的数字,从0到4。我'我尝试将其更改为

typedef struct {
int j[NUM_T];
int vetor[BUFFER_SIZE];
} estrutura_main;

但我无法访问线程中我想要的 j 位置。

如何解决这个问题?

最佳答案

这是因为 &struct 对于 pthread_createNUM_T 调用始终是相同的。

你可以试试

estrutura_main structure[NUM_T];
for(i=0;i<NUM_T;i++){
structure[i].j=i;
pthread_create(&threads[i], NULL, sum, (void*)&structure[i]);
}

然后每个线程都会获得一个指向不同实例的指针。

关于c - 将参数传递给线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30221308/

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