首页 > 其他 > 详细

进程同步与异步-软件实现(算法)

时间:2014-08-18 14:19:42      阅读:337      评论:0      收藏:0      [点我收藏+]

一,初步设想

  让两个进程实现同步与互斥访问临界资源。

  伪代码:

turn 。。0 1
P0

while turn=1 do{nothing}
<临界区>
turn := 1

P1

while turn=0 do{nothing}
<临界区>
turn := 1

 问题:

  turn 为0时,进程P0在进入临界区前(在临界区外),如果发生失败,则会影响其他进程的执行。同理,反过来,turn 为1时,进程P1也会影响进程P0的执行。

  此外,其中的另一个进程在临界区内失败,从而没能将turn的值改变,也会影响其他进程的执行。  

  总之,无论进程在临界区内还是临界区外,都会影响其他进程的执行。并且,他们必须交错执行。

第一次改进:

  “初步设想”,留下一个问题,就是上面说的。究其原因,就是其中一个进程的执行,要依托另外一个进程的执行。为了解决“初步设想”中遗留的问题,我们用一个标志flag,标志临界区是否处于被占用状态。

  flat[0],flat[1] 为ture时,分别表示P0,P1他们占用临界区;当他们为false时,分别表示P0,P1没有占用临界区。至于为什么要这样设置,我个人把这种思想,定义为"数组法","数组法",这个名称,当然是为了让我理解。(当然可能有别的更好的名称)。

  在这里我不得不先提到我在 学习Linux的时候,

进程同步与异步-软件实现(算法),布布扣,bubuko.com

进程同步与异步-软件实现(算法)

原文:http://www.cnblogs.com/listened/p/3919377.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!