首页 > 试题广场 >

属于同一进程的两个线程 T1和 T2并发

[单选题]
属于同一进程的两个线程 T1和 T2并发执行,共享初值为 0 的全局变量 X。T1和 T2实现对全局变量 x 加 1 的伪代码分别如下:
T1:
temp1=X;
temp1=temp1+1;
X=temp1;
T2:
temp2=X;
temp2=temp2+1;
X=temp2;
2个线程进行到任意一步都能被对方打断,执行另外一个线程的代码,请问在所有可能的执行序列中,使 x 的值为 2 的序列个数有几种?
  • 1
  • 2
  • 3
  • 4
  • 5
由于X的值是通过赋值给temp来改变的,所以只要x赋值给temp后面即使有线程干预也对此线程的执行没影响
按照这个逻辑,要么T1先2后;或者T2先T1后,只有两种方式
发表于 2021-05-31 18:48:50 回复(0)
没有看到是并发
发表于 2022-09-13 18:14:12 回复(0)
1和2两种结果,T1或T2在T2或T1拿到X的值之后但是未赋值之前拿到了X的值,此时T1或者T2先执行完赋值 X=1,T2或T1的tmp记录的X的值是0,所以+1后是1并进行赋值;
发表于 2022-01-31 18:40:09 回复(0)
T1优先,T2优先
发表于 2021-06-16 21:10:22 回复(3)