【问题标题】:Why are two semaphores and one mutex required in solving bounded buffer instance of producer-consumer?为什么在解决生产者-消费者的有界缓冲区实例时需要两个信号量和一个互斥锁?
【发布时间】:2016-11-30 10:02:22
【问题描述】:

在生产者消费者问题中使用有界缓冲区时,为什么除了信号量之外还必须使用互斥锁?

【问题讨论】:

    标签: mutex semaphore producer-consumer


    【解决方案1】:
    empty:semaphore(n)
    full: semaphore(0)
    mutex: semaphore(1)
    

    “mutex”用于锁定Buffer。

    "full" 用于在缓冲区为空时阻塞消费者。

    "empty" 用于在缓冲区满时阻塞生产者。

    这就是您需要 3 个信号量的原因。

    你可以很容易地用谷歌搜索代码,所以我不会在这里粘贴它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-18
      • 2015-06-08
      • 1970-01-01
      • 2020-01-21
      • 2014-03-26
      • 2014-05-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多