我有这个结构:
#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);
}
我的问题是,当我在函数
j
中访问sum
时,它始终为4,并且每次应为一个不同的数字,从0到4。我试图将其更改为typedef struct {
int j[NUM_T];
int vetor[BUFFER_SIZE];
} estrutura_main;
但是我无法访问线程中想要的
j
位置。我该如何解决?
最佳答案
这是因为&structure
始终与您对NUM_T
的pthread_create
调用相同。
你可以试试
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/