正因为生来什么都没有,因此我们能拥有一切。(o゚▽゚)o

  • 微信公众号
  • Dekker算法与Peterson算法

    jingyile·2018-05-27·242 次阅读

    Dekker算法与Peterson算法都是用来解决进程/线程互斥问题

    Dekker互斥算法是由荷兰数学家Dekker提出的一种解决并发进程互斥与同步的软件实现方法。(百度百科

    Peterson算法是一个实现互斥锁的并发程序设计算法,可以控制两个线程访问一个共享的单用户资源而不发生访问冲突。

    Gary L. Peterson于1981年提出此算法。(百度百科

    Dekker算法思路:

    当p0希望进入自己的临界区时,它把自己的flag值设为true

    然后继续检查P1的flag
    如果P1的flag为false,P0可以立即进入自己的临界区。
    否则 P0检查turn,如果发现turn=0,那么它知道自己该坚持进入,
    从而周期性的检查P1的flag,
    P1在某一点将注意到应把turn值赋为0,随后把其flag置为false,允许P0进入
    在P0结束其临界区后,把自己的flag置为false。释放 其临界区,并把turn值置为1

    从而把坚持进入的权利转交给P1。


     

    Peterson算法思路

    考虑进程P0,一旦它把flag[0]置为true,P1不能进入其临界区;

    如果P1已经在临界区中,则flag[1]=true;且P0被阻止进入临界区。

    另一方面,还可以防止相互阻塞

    假设P0在它的while循环被阻塞,这意味这flag[1]=true且turn=1

    则当flag[1]变为false或者turn变为0时,P0都可以进入自己的临界区

     


    正因为生来什么都没有,因此我们能拥有一切。(o゚▽゚)o

    
    
    查看评论

    2 条咸鱼在这里躺着

    欢迎回来 , [ 修改 ]




    加载中……