gpt4 book ai didi

algorithm - 有人可以用 P V 形式解释生产者和消费者吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:12:14 25 4
gpt4 key购买 nike

Wikipedia has a sample code每个人都使用。

老实说,我不明白 P,V 的事情。

先说

The consumer must wait for the producer to produce something if the queue is empty.

然后它说

Example. A single consumer enters its critical section. Since fullCount is 0, the consumer blocks.

我假设阻塞意味着等待?我的作业要求我了解这种二进制信号量的用法,然后针对不同类型的生产者-消费者问题实现解决方案。但我不知道何时递增(在 P 和 V 中设置哪个共享变量)或递减。所以我希望有知识的人能给我解释一下?如果可以的话,请把我当成非计算机专业的学生?

最佳答案

想象一下,一对夫妇搬进了一所房子。

他们有一辆装满箱子的卡车,需要卸到房子里。

所以他们决定分工。

  • 保罗制片人说他会从卡车上取下箱子并将它们排成一行在人行道上。

  • Charlie Consumer 说他会把人行道上的箱子拿走他们进屋。

用了一段时间效果不错。但后来彼得出现了,他提出帮助保罗兄弟。突然,人行道上堆满了箱子查理可以接他们。他为此感到沮丧并称呼兄弟康拉德和卡尔。但是康拉德弄伤了他的胳膊,卡尔继续玩他的电话,所以现在:

  • 有时生产者(保罗、彼得)的速度仍然超过消费者,人行道上挤满了人,他们不得不站在周围拿着箱子

  • 有时消费者(查理、康拉德、卡尔)的速度超过生产者他们站在人行道上,而不是在家里打开行李

所以每个人都制定了一个规则:在你去那里之前检查人行道!

不幸的是,它没有帮助。保罗和彼得,清空两端从卡车上,两人都看到了几乎满满的人行道,但足够清楚多放一个盒子的空间。于是他们俩都拿起了一个盒子,走了过去,然后互相碰撞(竞争条件!)。

最后 Quincy Queue 出现了。他制定了三个新规则:

  1. 保罗/彼得:你们都必须和我确认一下,以确保有下车前的空位:

  2. 康拉德/卡尔/查理:你必须和我核实一下在你拿起之前确保有一个盒子:

  3. 最后,因为只有我一个人,所以我无法追踪如果不止一个人在弄乱这条线,那么即使如果我在第 1 步或第 2 步给你开了绿灯,你仍然需要检查以确保没有其他人在线。

所以彼得/保罗的最终规则变成了:

waitFor(spaceOnSideWalk)
waitFor(permissionToUseSideWalk))
dropBoxOnSidewalk(box)
nowSomeoneElseCanUse(permissionToUseSideWalk))
nowSomeoneElseCanUse(boxesOnSideWalk)

(和查理/卡尔/康拉德互补)

如果你想到

waitFor == decrement == P
nowSomeoneElseCanUse == increment == V

然后您将在维基百科页面上获得准确的算法。

关于algorithm - 有人可以用 P V 形式解释生产者和消费者吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13374397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com