我是操作系统的新手,因此有关于并发任务问题的一些问题,如下所示。 2个并发任务,其中每个赋值语句以原子方式执行。共享变量x和y设置为0。
Task 0 : x = 1 a = y Task 1 : y = 1 b = x
在并发任务结束时,a和b的值必须是什么?
A.(a == 0) -> (b == 1)
B.(b == 0) -> (a == 1)
C.(a == 0) -> (b == 1)
D none
任何人都能为我解释一下吗?非常感谢。
答案 0 :(得分:0)
由于您有4种不同的(原子)操作,并且不能保证不同任务中的操作顺序(在某些情况下,即使同一线程中的操作顺序可以互换,但我们暂时忽略它),我们可以如果执行的第一个操作是T0_1(任务0的第一个操作),则具有以下可能的结果:
T0_1 T0_2 T1_1 T1_1 T0_2 T1_2 T1_2 T1_2 T0_2
3个可能的路径,如果执行从T1_1开始,则相同的数量,总共6个可能的结果,但正如我所提到的,这只是在同一任务中的操作顺序没有改变的情况下。