3
我有我需要解決的一個問題,現在的問題的解釋:線程和信號燈解決方案
- 我有n個學生螺紋
- 我有一個老師螺紋
- 教可以協助只有一個學生在時間
- 學生們應該打電話給老師尋求幫助,所以當第一個學生來到TA時,其他學生來找到TA很忙就得等到椅子上,只有3把椅子
- 其他學生過來發現椅子已滿,必須稍後復出
- 如果老師沒有學生被協助,他會檢查椅子上的學生,如果沒有他會去睡覺(什麼都不做)
這個問題必須使用線程和信號量來實現。
我有我需要解決的一個問題,現在的問題的解釋:線程和信號燈解決方案
這個問題必須使用線程和信號量來實現。
建議:
1)我將有一個老師線程和N線的學生(比如你)。
2)我會有一個信號量。
3)我會有一個椅子陣列(你的「隊列」);每個元素初始化爲-1。
4)每次教師可以看到學生,他鎖定陣列,挑選一名學生,「清理」椅子,並解鎖陣列。
5)每次學生想要等待時,他都會檢查是否有空閒椅子,鎖定陣列,「設置」椅子以及解鎖陣列。
6)我會馬上「malloc()」,然後初始化椅子數組,只要你知道你會有多少學生。 7)如果這是C++,「老師」,「學生」和「椅子」將分別是類。
恕我直言...
請問這是我在做什麼,但不是在執行一個陣列的麻煩去,我進出 – ykh
我用了一個信號量與4個值,其遞減與遞增與每一個學生我正在嘗試你的解決方案,但你能告訴我如何處理第一個進來的學生,我的意思是沒有加入隊列的那個 – ykh