有一个面试问题:
x,y,a,b都是整数,最初为零。 有两个主题。
主题1:
x=1 a=y
主题2:
y=1 b=x
这两个线程同时运行。 a和b的可能结果是什么?
我的解决方案: 由于顺序一致性,有六个有效的执行顺序。
(1)x = 1,a = y,y = 1,b = x
(2)x = 1,y = 1,a = y,b = x
(3)x = 1,y = 1,b = x,a = y
(4)y = 1,x = 1,a = y,b = x
(5)y = 1,x = 1,b = x,a = y
(6)y = 1,b = x,x = 1,a = y
所以可能的结果是:a = 1,b = 1或a = 0,b = 1或a = 1,b = 0 任何人都可以帮我核实一下吗?
答案 0 :(得分:0)
鉴于这两个主题,这些是6种可能的操作顺序。您可能的结果也是正确的。设置x / y的两个操作之一必须在相应的读取之前发生,因此a / b中的至少一个必须为1.两者都可以为1.