我试着编写一个带有2个线程的代码,它应该将2个数字y增加到100,每次发生增量时,都应该打印出来。使用多线程递增变量的值
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
void *inc_x(void *x_void_ptr){
int *x_ptr = (int *)x_void_ptr;
while (++(*x_ptr)<100) {
printf("x increment to %d \n",*x_ptr);
*x_ptr++;
}
return NULL;
}
void *inc_y(void *y_void_ptr){
int *y_ptr = (int *)y_void_ptr;
while (++(*y_ptr)<100) {
printf("y increment to %d \n",*y_ptr);
*y_ptr++;
}
return NULL;
}
int main()
{
int x = 0;
int y = 0;
printf("x: 0 , y : 0\n");
pthread_t inc_x_thread, inc_y_thread;
if (pthread_create(&inc_x_thread, NULL, inc_x, &x)) {
fprintf(stderr, "Error creating thread \n");
return 1;
}
if (pthread_create(&inc_y_thread, NULL, inc_y, &y)) {
fprintf(stderr, "Error creating thread \n");
return 2;
}
printf("%d , %d" , x,y);
return 0;
}
但我的x,y值没有增加。有人能告诉我为什么吗?谢谢(顺便说一句,我是C新手)。
'* x_ptr ++;'增加指针。你也不要等待线程。 – mch
你怎么知道他们不增加?它是一个多线程程序,你不能知道'mainf中的printf(“%d,%d”,x,y);'会在线程之前还是之后执行。 – Lundin
如果你修复指针增量(见mch)。你在一次循环迭代中增加值两次 –