两个等价线程并发的执行下列程序,a为全局变量,初始为0,假设printf、++、--操作都是原子性的,求所有可能输出
void foo() {
if(a <= 0) {
a++;
}
else {
a--;
}
printf("%d", a);
}
——输出 1 0
——输出 1 2
——输出2 2
由此可见并发操作中 对共享数据的读写可能出现多种结果,所以必要时要并发控制,也就是 原子性、时序性、可见性的体现