并发任务如何执行?

时间:2014-03-18 19:14:07

标签: operating-system

我是操作系统的新手,因此有关于并发任务问题的一些问题,如下所示。 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

任何人都能为我解释一下吗?非常感谢。

1 个答案:

答案 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个可能的结果,但正如我所提到的,这只是在同一任务中的操作顺序没有改变的情况下。