欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

操作系统 并发执行

程序员文章站 2022-05-05 09:57:55
...

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

void foo() {

    if(a <= 0) {

        a++;

    }

    else {

        a--;

    }

    printf("%d", a);

}

——输出 1 0

操作系统 并发执行

——输出 1 2

操作系统 并发执行 ——输出2 2

操作系统 并发执行

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