好吧我試圖通過struct
到pthread_create
函數在pthread
中傳遞一對數字。但我通過我得到當函數被調用的數量和數量是不同的,隨機將struct傳遞給pthread作爲參數
這裏是struct
struct Pairs {
long i,j;
};
而且裏面主要
void main()
{
long thread_cmp_count = (long)n*(n-1)/2;
long t,index = 0;
struct Pairs *pair;
pair = malloc(sizeof(struct Pairs));
cmp_thread = malloc(thread_cmp_count*sizeof(pthread_t));
for(thread = 0;(thread < thread_cmp_count); thread++){
for(t = thread+1; t < n; t++){
(*pair).i = thread;
(*pair).j = t;
pthread_create(&cmp_thread[index++], NULL, Compare, (void*) pair);
}
}
for(thread= 0;(thread<thread_cmp_count); thread++){
pthread_join(cmp_thread[thread], NULL);
}
free(cmp_thread);
}
和功能比較
void* Compare(void* pair){
struct Pairs *my_pair = (struct Pairs*)pair;
printf("\nThread %ld, %ld", (*my_pair).i, (*my_pair).j);
return NULL;
}
我得到的數字,它也是rando米
Thread 0,2
Thread 1,2
Thread 2,3
Thread 2,3
Thread 2,3
Thread 2,3
我是否通過了struct
錯誤?
請注意,在C,結構訪問通過指針被永遠不會寫成'(* foo).bar':而是使用'foo-> bar'。 – unwind