Multithreading 基本的多线程概念理解
有一个采访问题: x、 y,a,b都是整数,最初为零。 有两条线 线程1:Multithreading 基本的多线程概念理解,multithreading,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=
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
有人能帮我验证一下吗?考虑到两个线程,这是6种可能的操作顺序。您可能的结果也是正确的。设置x/y的两个操作之一必须在相应的读取之前发生,因此a/b中至少有一个必须为1。两者都可能为1。在读取
y
之前执行x=1
的保证在哪里?