目前我正在创建一个程序,从1-99创建60个随机整数,并将它们存储在[5] [12] 2d数组中,我正在尝试使用pthreads,以便用户在2之间输入一个数字x &安培; 4包括,并且对于数组中的每个偶数,数字递增1,并且对于每个奇数,它递减1,其中x个线程执行递增/递减。目前我有这个:
int randint[5][12];
int x;
void *routine(void* arg){
for(int i = 0; i < 5; i++){
for(int j = 0; j < 12; j++){
if(randint[i][j] % 2){
randint[i][j]--;
}
else randint[i][j]++;
}
}
return NULL;
}
int main(int argc, char* argv[]){
x = atoi(argv[1]);
time_t t;
assert(x >= 2 && x <= 4);
printf("You entered: %d\n", x);
srand((unsigned) time(&t));
printf("Original Array\n");
for(int i = 0; i < 5; i++){
for(int j = 0; j < 12; j++){
randint[i][j] = rand() % (99 + 1 - 1) + 1;
printf("%d\t", randint[i][j]);
}
printf("\n");
}
printf("\n\n");
pthread_t thr;
int r;
for(int i = 1; i <= x; i++){
r=pthread_create(&thr, NULL, &routine, (void*)(long)i);
}
pthread_join(thr, NULL);
printf("Updated Array\n");
for(int i = 0; i < 5; i++){
for(int j = 0; j < 12; j++){
printf("%d\t", randint[i][j]);
}
printf("\n");
}
printf("\n");
}
目前,如果创建了多个线程,pthread函数会变得奇怪,这显然不是计划。
我的问题是我如何在x个pthread之间划分[5] [12]数组,这样它们就不会相互递增/递减,并且每个线程获得(相对)相等的份额数组?