我有这个结构:
#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.我已经尝试将其更改为< / p>
typedef struct {
int j[NUM_T];
int vetor[BUFFER_SIZE];
} estrutura_main;
但我无法访问线程中我想要的j
位置。
我该如何解决这个问题?
答案 0 :(得分:0)
这是因为&structure
对NUM_T
的{{1}}来电始终相同。
您可以尝试
pthread_create
然后每个线程获得一个指向不同实例的指针。