操作系统 并发执行

两个等价线程并发的执行下列程序,a为全局变量,初始为0,假设printf、++、--操作都是原子性的,求所有可能输出

void foo() {

    if(a <= 0) {

        a++;

    }

    else {

        a--;

    }

    printf("%d", a);

}

——输出 1 0

——输出 1 2

 ——输出2 2

由此可见并发操作中 对共享数据的读写可能出现多种结果,所以必要时要并发控制,也就是 原子性、时序性、可见性的体现 

猜你喜欢

转载自blog.csdn.net/qq_33369979/article/details/88053869