我目前正在嘗試解決[本書(shū)]中發(fā)現(xiàn)的“男女通用浴室”問(wèn)題,(http://greenteapress.com/semaphores/LittleBookOfSemaphores.pdf)限制是: - 如果浴室是空的,男性或女性都可以進(jìn)入 - 如果浴室里有男性或女性,則只有相同性別可以進(jìn)入 - 浴室里只能有兩個(gè)人讓我困惑的是,雖然我對(duì)邏輯如何工作的概念有一些了解,但我不確定在哪里/如何實(shí)現(xiàn)這段代碼。例如,我有一個(gè)名為“employee”的類(lèi),它擴(kuò)展線程并可以設(shè)置一個(gè)變量來(lái)顯示他們是男性還是女性。我還有一個(gè)“浴室”類(lèi),它還擴(kuò)展了包含稱(chēng)為“正在使用”的信號(hào)量的線程,該信號(hào)量用于確定浴室是否已滿(mǎn)。我試圖實(shí)現(xiàn)書(shū)中找到的燈開(kāi)關(guān)結(jié)構(gòu),我認(rèn)為它只是一個(gè)監(jiān)視器。我不明白這是如何鎖定特定類(lèi)型的線程的。我的問(wèn)題是,我在哪里存儲(chǔ)信號(hào)量變量,以及訪問(wèn)它們以實(shí)現(xiàn)其余邏輯的最佳方法是什么?編輯:當(dāng)我提到燈開(kāi)關(guān)時(shí),我指的是第 70 頁(yè)上的結(jié)構(gòu),而浴室問(wèn)題位于第 170 頁(yè)上。浴室類(lèi)包含: Semaphore being_used = new Semaphore(1);員工類(lèi)包含: private String id; private int time; private String type; private Boolean finished; private Bathroom b_room;
1 回答

臨摹微笑
TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊
不讀這本書(shū)...信號(hào)量屬于浴室:如果您有三個(gè)浴室和七個(gè)用戶(hù),那么您將擁有三個(gè)信號(hào)量,而不是一個(gè),而不是七個(gè)。每當(dāng)用戶(hù)申請(qǐng)進(jìn)入浴室時(shí)都應(yīng)獲取信號(hào)量許可證,并在向其發(fā)送退出消息或拒絕進(jìn)入的用戶(hù)進(jìn)入時(shí)釋放信號(hào)量許可證。
添加回答
舉報(bào)
0/150
提交
取消