我目前正在嘗試解決[本書]中發(fā)現(xiàn)的“男女通用浴室”問題,(http://greenteapress.com/semaphores/LittleBookOfSemaphores.pdf)限制是: - 如果浴室是空的,男性或女性都可以進入 - 如果浴室里有男性或女性,則只有相同性別可以進入 - 浴室里只能有兩個人讓我困惑的是,雖然我對邏輯如何工作的概念有一些了解,但我不確定在哪里/如何實現(xiàn)這段代碼。例如,我有一個名為“employee”的類,它擴展線程并可以設置一個變量來顯示他們是男性還是女性。我還有一個“浴室”類,它還擴展了包含稱為“正在使用”的信號量的線程,該信號量用于確定浴室是否已滿。我試圖實現(xiàn)書中找到的燈開關結構,我認為它只是一個監(jiān)視器。我不明白這是如何鎖定特定類型的線程的。我的問題是,我在哪里存儲信號量變量,以及訪問它們以實現(xiàn)其余邏輯的最佳方法是什么?編輯:當我提到燈開關時,我指的是第 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條經(jīng)驗 獲得超2個贊
不讀這本書...信號量屬于浴室:如果您有三個浴室和七個用戶,那么您將擁有三個信號量,而不是一個,而不是七個。每當用戶申請進入浴室時都應獲取信號量許可證,并在向其發(fā)送退出消息或拒絕進入的用戶進入時釋放信號量許可證。
添加回答
舉報
0/150
提交
取消