Я пытаюсь создать пять потоков в основной теме.
В функции pthread_create () я передаю возрастающее значение 'num' в качестве переменной для функции 'up' каждый раз, поэтому я подумал, что значение y в каждом потоке должно быть 1,2,3,4 и 5 в случайном порядке соответственно.
Однако, когда printf («перед добавлением num равно% d \ n», y) в функции «up» вызывается, чтобы проверить значение y, он показывает, что y может быть неопределенным, что означает, что y может быть любым числом от 1 до 5.
Как мне исправить эту проблему параллельного ввода ... Заранее спасибо за любую помощь!
const int TOTAL_RUNS = 1000000;
void *up(void *ptr) {
int i;
int y = *((int*)ptr);
printf("before add num is %d\n", y);
for (i = 0; i < TOTAL_RUNS; i++)
y++;
printf("Finished adding 1 a total of %d times.\n", TOTAL_RUNS);
}
void main() {
int num = 1;
pthread_t t[5];
int i;
for (i = 0; i < 5; i++) {
pthread_create(&t[i], NULL, up,(void*) &num);
num++;
}
for (i = 0; i < 5; i++) {
pthread_join(t[i], NULL);
}
}