曲径通幽论坛

标题: peterson 算法 [打印本页]

作者: beyes    时间: 2011-3-22 11:23
标题: peterson 算法
peterson 算法较 dekker 算法(关于 dekker 算法分析见:http://www.groad.net/bbs/read.php?tid-3251.html)来讲显得更为简洁。

对于 P0 进程的代码为:
[C++] 纯文本查看 复制代码
    flag[0] = 1;   
    turn = 1;      
    while (flag[1] == 1 && turn == 1)
    {
        // 忙等待
    }
    // 临界区开始
    ...
    // 临界区结束
    flag[0] = 0;           


对于 P1 代码如下:
  
[C++] 纯文本查看 复制代码
  flag[1] = 1;
    turn = 0;
    while (flag[0] == 1 && turn == 0)
    {
        // 忙等待
    }
    // 临界区开始
    ...
    // 临界区结束
    flag[1] = 0;

从 peterson 算法的代码来看,两个进程都是“谦让式” (对turn的设置)的去访问临界区。这样一来,就达到了互斥访问的效果。




欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2