看板 Grad-ProbAsk 關於我們 聯絡資訊
想請問 semaphore 一些問題 就是當一堆人在 wait 某一個 semaphore 時, 一旦有人 signal,那會是誰先跑離 wait 呢? 我想得到的解決方式就是加一個 waiting queue 這樣 所以誰先 wait,之後 signal 便誰先解救 應該是這樣沒錯? 但這題: http://imgur.com/a/lkVWw 大家都在 wait 那邊 wait(s2) 那右邊的 signal 一旦 signal(s2),不就一堆 process 全部逃離 wait 了嗎 @@? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.132.251.85 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1474906437.A.108.html
ken52011219: 當三個process 以上 就要考量到它的bound waiting 09/27 00:24
ken52011219: 否則以我個人認知會產生 race condition 09/27 00:26
應該說只要保證互斥就不會有 race condition 了吧?
ken52011219: 但當其中一個process 可以進入時 其他則繼續wait 只 09/27 00:28
ken52011219: 是不能保障是哪個得到進入權 09/27 00:28
ken52011219: 而如你所說 加入wait queue 可以使bound waiting 成 09/27 00:30
ken52011219: 立 09/27 00:30
洪逸關於這邊都直接帶過@@
ken52011219: 從1->0其實時間是固定的 當一個變為0時 總會有其中一 09/27 00:34
ken52011219: 個process第一名 09/27 00:34
ㄟ 我好像知道我糾結的點在哪惹 XDD 多謝討論
ken52011219: 沒解釋清楚 XDD 我的意思應該說是 這幾個process 就 09/27 00:35
ken52011219: 是在競速 看誰先拿到權杖 09/27 00:35
ken52011219: 把condition 無視 無視 無視 ~ 09/27 00:37
要幫你砍掉嗎 XDD
ken52011219: 關於同步問題 洪逸上這段時過多的程式碼缺乏時間 又 09/27 00:39
ken52011219: 偏偏這章大概佔全部筆記的1/3以上 難免會這樣 09/27 00:39
ken52011219: 都可以XDD 09/27 01:05
gigayaya: 我記得我上次問過,誰先進去這個問題不是同步問題而是要 09/27 01:43
gigayaya: 看你底層的wait怎麼製作 09/27 01:43
這我知道,但洪逸就是這部分講不多啊... ※ 編輯: kyuudonut (220.132.251.85), 09/27/2016 01:49:29
krusnoopy: 看誰先拿到CPU,不會同時一堆人擠進wait,wait是atomic 09/27 17:59
krusnoopy: 指令,至於誰先搶到,黃能富教授的開放式課程說要看OS怎 09/27 17:59
我覺得這段話有點問題,wait 是否被做成 atomic 應該也是要看OS怎麼設計吧? 但其中裡面 semaphore 值的操作是 atomic 是肯定的 http://stackoverflow.com/questions/13528860/semaphore-wait-and-signal
krusnoopy: 麼設計 09/27 17:59
※ 編輯: kyuudonut (220.132.251.85), 09/27/2016 19:35:54
krusnoopy: 感謝更正 09/27 20:21