P1: { P1: { shared int x; shared int x; x = 10; x = 10; while (1) while (1){ x = x -1; x = x -1; x = x +1; x = x +1; if (x != 10) if (x != 10) printf("x is %d", x) printf("x is %d", x) } } } } } }
请注意单处理器系统上的调度器将会通过交替执行指令来实现两个进程的“伪并行”,交替执行的顺序
无严格要求。
a. 给出打印 “x is 10” 的顺序(即跟踪语句交替执行的顺序)。
b. 给出打印 “x is 8” 的顺序。注意,在源语言级,自增/自减命令不是原子化的,即下面的汇编代码
实现单个 C 语言增量指量( x = x + 1 ):
LD RO, X /*loadROfrommemorylocationx*/ INCR RO /*incrementRO*/ STO R0, X /*storetheincrementedvaluebackinX*/