Multithreading 基本的多线程概念理解

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、 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
有人能帮我验证一下吗?

考虑到两个线程,这是6种可能的操作顺序。您可能的结果也是正确的。设置x/y的两个操作之一必须在相应的读取之前发生,因此a/b中至少有一个必须为1。两者都可能为1。

在读取
y
之前执行
x=1
的保证在哪里?