作者gn123 (GnCtIlike)
看板Grad-ProbAsk
標題[理工] [OS] 100台大資工
時間Wed Jan 30 12:03:07 2013
想問一下觀念@@
100台大OS有一題說,設計一個防race condition的方法,然後不能有polling
看板上解答是說: 這意思是,不能占用cpu time,也就是不能busy waiting
然後翻了一下洪逸筆記,洪逸說不使用busy waiting的方法就是signal(s),wait(s)
可是semaphore的wait(s) ,不是也是busy waiting??
wait(){
while(s<=0) do no-op;
s=s-1;
}
那為什麼說semaphore是不使用busy waiting的方法呢??
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.66.184
→ yraid:可以用disable interrupt來實作 01/30 12:11
→ kiele:semaphore可以用spinlock或blocking的做法來定義,第一種會有 01/30 12:32
→ kiele:busy-loop 但block方式使用wating queue就不會有 01/30 12:32
→ gn123:了解! 感謝~~ 01/30 12:52