新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 研友的交流园地,讨论关于计算机考研的方方面面。
    [返回] 中文XML论坛 - 专业的XML技术讨论区计算机理论与工程『 计算机考研交流 』 → 北大必考题,PV经典案例分析。。。 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 32902 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 北大必考题,PV经典案例分析。。。 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     borlong 帅哥哟,离线,有人找我吗?魔羯座1986-12-30
      
      
      等级:大三(面向对象是个好东东!)
      文章:106
      积分:519
      门派:XML.ORG.CN
      注册:2006/6/26

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给borlong发送一个短消息 把borlong加入好友 查看borlong的个人资料 搜索borlong在『 计算机考研交流 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看borlong的博客31
    发贴心情 

    经典的理发师问题中的疑问(请牛人根据我的思路来指点阿,拜谢!!):
    题目略去哦,书中有哦。。。

    =========================
    小弟对下面有句的理解不是很透彻!!  
    希望牛人点拔小弟哦......拜谢 ^___^

    书中的解法, 我的注释(我的思路)!!!!!!有错吗?????

    #define chairs 5

    typedef int semaphore ,

    semaphore  customers=0;
    semaphore  barbers=1;
    semaphore  mutex=1;

    int waiting=0;

    void customers(void)
    {p(mutex)                //互斥访问waiting
    if (waiting<chairs)
        {waiting++;
         v(mutex);            //释放对waiting的限制
         v(customers);       //顾客又多了一个!!(可以这样理解吧?)
         p(barbers);       //利用一个理发师!!即少了一个理发师。(可以这样理解吧?)
         get_haircut();
        }
    else
       {v(mutex);
       }     
    }

    void baber(void)
    {while(1)
         {p(customers);  // 把一个顾客理发,即顾客少了一个(可以这样理解吧?)
          p(mutex);     //互斥访问waiting
          waiting--;
          v(mutex);     //释放对waiting的限制
          v(barbers);   //???????????(这个应该如何理解呢???)
          cut_hair();
         };
    }

    ----------------------------------------------
    落花如雪胜雪香,秋风似水赛水凉。花下醉影不忍看,偏偏圆月又看窗!

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/10/15 20:05:00
     
     Logician 帅哥哟,离线,有人找我吗?天蝎座1984-10-28
      
      
      威望:9
      头衔:逻辑爱好者
      等级:研三(收到IBM CRL的Offer了)(版主)
      文章:1219
      积分:10357
      门派:IEEE.ORG.CN
      注册:2005/3/12

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Logician发送一个短消息 把Logician加入好友 查看Logician的个人资料 搜索Logician在『 计算机考研交流 』 的所有贴子 点击这里发送电邮给Logician  访问Logician的主页 引用回复这个贴子 回复这个贴子 查看Logician的博客32
    发贴心情 
    p(barbers)相当于说“顾客预约了一名理发师”,v(barbers)相当于说“理发师应约过来了”。如果不v(barbers),顾客进程就挂起着的,不可能get_haircut()了。

    这里和前面互斥的一个重要区别是:这里是需要get_haircut()和cut_hair()同时运行(而不是互斥运行)的。

    想像一个实例:你用QQ和朋友聊天,你先执行P(barbers),相当于向你朋友发个消息(你进入你朋友的“响应队列”中),然后你把你的QQ挂着,自己看书去了(进程挂起)。你朋友来了,就V(barbers),相当于给你发一个消息,告诉你他已经来了。然后你和他开始聊天(你get_haircut(),他cut_hair())。显然,必须你们同时在线、同时运行QQ才能聊天,而不是“互斥运行”。

    ----------------------------------------------
    Three passions, simple but overwhelmingly strong, 
    have governed my life: the longing for love, the
    search for knowledge, and unbearable pity for the
    suffering of mankind.
                                - Bertrand Russell

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/10/15 22:32:00
     
     borlong 帅哥哟,离线,有人找我吗?魔羯座1986-12-30
      
      
      等级:大三(面向对象是个好东东!)
      文章:106
      积分:519
      门派:XML.ORG.CN
      注册:2006/6/26

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给borlong发送一个短消息 把borlong加入好友 查看borlong的个人资料 搜索borlong在『 计算机考研交流 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看borlong的博客33
    发贴心情 
    以下是引用Logician在2006-10-15 22:32:00的发言:
    p(barbers)相当于说“顾客预约了一名理发师”,v(barbers)相当于说“理发师应约过来了”。如果不v(barbers),顾客进程就挂起着的,不可能get_haircut()了。

      必须你们同时在线、同时运行QQ才能聊天,而不是“互斥运行”。


    哇!dear logician!   ^__^
    我在理解上述 pv操作时候,把pv的含义和pv的减和加一起来理解。

    如:v(customers)   理解成 customers++,即顾客又来了一个。
         p(barbors) 理解成 barbers--,即 用了一个理发师,理发师便少了一个。

    那么 在void barber(void) 中的 v(barbers) 理解成,barbers++,即说 理发师多了一个??

    dear logician,我习惯于用自己的思维来理解。 难道我的思维错了吗???

    如果错了,我会严格按照书本上的思维的理解。不过有点像是被硬塞进去的阿!

    请指点。 拜谢。。。^__^

    ----------------------------------------------
    落花如雪胜雪香,秋风似水赛水凉。花下醉影不忍看,偏偏圆月又看窗!

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/10/16 7:51:00
     
     Logician 帅哥哟,离线,有人找我吗?天蝎座1984-10-28
      
      
      威望:9
      头衔:逻辑爱好者
      等级:研三(收到IBM CRL的Offer了)(版主)
      文章:1219
      积分:10357
      门派:IEEE.ORG.CN
      注册:2005/3/12

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Logician发送一个短消息 把Logician加入好友 查看Logician的个人资料 搜索Logician在『 计算机考研交流 』 的所有贴子 点击这里发送电邮给Logician  访问Logician的主页 引用回复这个贴子 回复这个贴子 查看Logician的博客34
    发贴心情 
    不能简单地把信号量看作“计数器”。
    当信号量为正时,可以看作是“计数器”。
    当信号量为负时,它相当于一个“等待队列”,P为入队,V为出队。

    ----------------------------------------------
    Three passions, simple but overwhelmingly strong, 
    have governed my life: the longing for love, the
    search for knowledge, and unbearable pity for the
    suffering of mankind.
                                - Bertrand Russell

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/10/16 8:44:00
     
     borlong 帅哥哟,离线,有人找我吗?魔羯座1986-12-30
      
      
      等级:大三(面向对象是个好东东!)
      文章:106
      积分:519
      门派:XML.ORG.CN
      注册:2006/6/26

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给borlong发送一个短消息 把borlong加入好友 查看borlong的个人资料 搜索borlong在『 计算机考研交流 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看borlong的博客35
    发贴心情 
    以下是引用Logician在2006-10-16 8:44:00的发言:
    不能简单地把信号量看作“计数器”。
    当信号量为时,可以看作是“计数器”。
    当信号量为时,它相当于一个“等待队列”,P为入队V为出队


    哈哈哈哈哈。。。。
    我太开心啦!!!! 明白了!!!!

    对!!!应该想象成 队和对!!!

    拜谢dear logician !!!

    ----------------------------------------------
    落花如雪胜雪香,秋风似水赛水凉。花下醉影不忍看,偏偏圆月又看窗!

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/10/16 11:13:00
     
     runningwulf 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:33
      积分:201
      门派:XML.ORG.CN
      注册:2006/5/20

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给runningwulf发送一个短消息 把runningwulf加入好友 查看runningwulf的个人资料 搜索runningwulf在『 计算机考研交流 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看runningwulf的博客36
    发贴心情 
    以下是引用Logician在2006-10-15 22:32:00的发言:
    p(barbers)相当于说“顾客预约了一名理发师”,v(barbers)相当于说“理发师应约过来了”。如果不v(barbers),顾客进程就挂起着的,不可能get_haircut()了。

    这里和前面互斥的一个重要区别是:这里是需要get_haircut()和cut_hair()同时运行(而不是互斥运行)的。

    想像一个实例:你用QQ和朋友聊天,你先执行P(barbers),相当于向你朋友发个消息(你进入你朋友的“响应队列”中),然后你把你的QQ挂着,自己看书去了(进程挂起)。你朋友来了,就V(barbers),相当于给你发一个消息,告诉你他已经来了。然后你和他开始聊天(你get_haircut(),他cut_hair())。显然,必须你们同时在线、同时运行QQ才能聊天,而不是“互斥运行”。


    我还有个疑问。如果这样设置Barbers的位置,那barbers的初始值应该设为0阿。如果设为1,第一个顾客将没有得到理发师的回应就开始理发了?

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/12/2 23:39:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 计算机考研交流 』 的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2026/6/10 16:56:57

    本主题贴数36,分页: [1] [2] [3] [4]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    93.750ms