来源于题目:
两个等价线程并发的执行下列程序,a为全局变量,初始为0,假设printf、++、–操作都是原子性的,则输出肯定不是哪个?
void foo() {
if(a <= 0) {
a++;
}
else {
a--;
}
printf("%d", a);
}
选项:
A. 01
B. 10
C. 12
D. 22
什么是原子操作?
- 原子操作指的是在执行过程中不会被别的代码路径所中断的操作。
- 分为两类:整型原子操作 和 位原子操作。
- 本题假设printf、&#