为了账号安全,请及时绑定邮箱和手机立即绑定

监控程序背后的逻辑

监控程序背后的逻辑

哔哔one 2023-10-12 16:52:18
我目前正在尝试解决[本书]中发现的“男女通用浴室”问题,(http://greenteapress.com/semaphores/LittleBookOfSemaphores.pdf)限制是: - 如果浴室是空的,男性或女性都可以进入 - 如果浴室里有男性或女性,则只有相同性别可以进入 - 浴室里只能有两个人让我困惑的是,虽然我对逻辑如何工作的概念有一些了解,但我不确定在哪里/如何实现这段代码。例如,我有一个名为“employee”的类,它扩展线程并可以设置一个变量来显示他们是男性还是女性。我还有一个“浴室”类,它还扩展了包含称为“正在使用”的信号量的线程,该信号量用于确定浴室是否已满。我试图实现书中找到的灯开关结构,我认为它只是一个监视器。我不明白这是如何锁定特定类型的线程的。我的问题是,我在哪里存储信号量变量,以及访问它们以实现其余逻辑的最佳方法是什么?编辑:当我提到灯开关时,我指的是第 70 页上的结构,而浴室问题位于第 170 页上。浴室类包含:  Semaphore being_used = new Semaphore(1);员工类包含:    private String id;    private int time;    private String type;    private Boolean finished;    private Bathroom b_room;
查看完整描述

1 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

不读这本书...信号量属于浴室:如果您有三个浴室和七个用户,那么您将拥有三个信号量,而不是一个,而不是七个。每当用户申请进入浴室时都应获取信号量许可证,并在向其发送退出消息或拒绝进入的用户进入时释放信号量许可证。



查看完整回答
反对 回复 2023-10-12
  • 1 回答
  • 0 关注
  • 48 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信