Lamport的互斥

时间:2010-11-13 13:37:07

标签: algorithm

鉴于lamport的快速互斥算法,我试图理解为什么等待那里。

算法:

start: b[i] = true
      x = i 
      if y != 0 then b[i] = false
                          await y = 0
                          goto start 
      fi
      y = i
      if x != i then b[i] = false
                         for j = 1 to n do await b[j] = false od
                         if y != i then await y = 0
                                            goto start 
                         fi 
      fi
      critical section
      y = 0
      b[i] = false 

我们不能只删除它们吗?

1 个答案:

答案 0 :(得分:3)

您希望等待(阻止)而不是旋转(不断执行检查可用性),而另一个进程/线程在关键部分,否则您将占用可在其他地方使用的资源。如果一次只能运行一个线程,那么您将阻止关键部分中的线程在整个时间片期间运行,从而导致程序花费更长的时间来完成。