基本的多线程概念理解

时间:2015-06-02 17:03:04

标签: multithreading

有一个面试问题:

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 任何人都可以帮我核实一下吗?

1 个答案:

答案 0 :(得分:0)

鉴于这两个主题,这些是6种可能的操作顺序。您可能的结果也是正确的。设置x / y的两个操作之一必须在相应的读取之前发生,因此a / b中的至少一个必须为1.两者都可以为1.