难以通过pthread_create传递struct

时间:2012-03-28 19:05:54

标签: c struct pthreads createthread

我有一个结构数组,我打算在for循环中将数组的每个元素传递给单独的pthread。

这是我的结构:

struct arrayData{
int *a;
int *b;
int up, low;

}

这是指向第一个结构和malloc的指针(dunno,如果我完全了解这里发生的事情):

struct arrayData * instance;
        instance = malloc(sizeof(struct arrayData)*n);

这是我对pthread_create的调用:

pthread_create( &thread[i], NULL, add, (void *)instance[i]);

对于该行,我收到消息“无法转换为指针类型”。

这条线有什么问题?

2 个答案:

答案 0 :(得分:6)

您正在尝试将结构转换为最后一个参数中的指针。您需要使用&传递结构的地址。

pthread_create( &thread[i], NULL, add, &instance[i]);

如jørgensenmentionedvoid *演员阵容是不必要的。

答案 1 :(得分:2)

instance的类型为struct arrayData *,因此instance[i]的类型为struct arrayData,这是一个聚合,而不是指针。预期用途可能是

pthread_create(&thread[i], NULL, add, &instance[i]);

演员,顺便说一句,毫无意义。