我接到了一项并发编程任务,要为一个男女通用的厕所编写代码。对于这个主题来说,这似乎是一个足够常见的作业。对于那些不熟悉的人,已经制定了规则(至少在这种情况下)
- 浴室可供男女使用,但不能同时使用。
- 最多 5 人同时进入厕所。
- 如果使用信号量,则必须自己实现。
在这门课之前我已经很久没有写代码了,我的知识已经生锈了。我最初只用计数器来编写代码,但在理解程序和那个版本的信息流时遇到了问题!
所以我重新开始,想知道我应该采取什么一般方式来解决这个问题。我最初的想法是有 1 个厕所,用二进制信号量实现,带有浴室监视器,限制为 5 个。
我还读到,问题背后的想法最适合每个人都是一个线程的实现。如果是这种情况,它可能会很困惑,因为我已经尝试过一次线程池(几周前),但它从未为我运行过。 :-/
目前我没有代码可以展示,所以我最关心的是如何设置的大纲。
最佳答案
看起来这个问题已经在java中被解决了 Cormac Redmond
关于使用信号量和监视器的 Java Unisex 浴室,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12019254/