首页 > 试题广场 >

两段程序分别如下(其中,R是寄存器,counter 为共享变

[单选题]

两段程序分别如下(其中,R是寄存器,counter 为共享变量而且初始值为1):

程序A 程序B
R=counter;                     R= counter,
R=R+l;                           R=R-l;
counterR                       counter=R

试问这两个程序对应进程并发执行都完成之后,counter 的值不可能为( )

  • 0
  • 1
  • 2
  • 除0,1,2外的所有值
  • 除0,1外地所有值
  • 除0,2外地所有值
  • 除1,2外地所有值
  • 除0外地所有值
  • 除1外地所有值
  • 除2外地所有值
简单说一下0,1,2的三种情况。
0:  B程序先拿到counter=1的数据装入R中;不用管A的具体执行过程,只需要等A程序执行完之后,执行R=R-1;COUNTER=R即可;
1:  这个只要A和B能分开执行,先执行A或者先执行B即可;
2: 与0的情况相反,A程序先拿到counter=1的数据装入R中;不管B的具体执行过程,等B执行完之后,执行R=R+1;COUNTER=R即可。
发表于 2018-07-25 15:21:01 回复(0)
我tm是在阅读理解嘛,这题意这么费解
发表于 2020-01-06 19:24:18 回复(1)
程序a和程序b实际上就是:counter++和counter--的具体执行过程,值得注意的是寄存器R不止一个。
发表于 2018-09-20 09:50:47 回复(2)
所以他俩用的不是同一个寄存器。。。
发表于 2022-02-16 20:08:22 回复(0)