[問題] sleep VS pthread_yield

看板C_and_CPP作者 (逆宇)時間11年前 (2012/08/08 12:27), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串1/2 (看更多)
Linux 問題(Question): 最近在寫程式時,平常習慣無限回圈的程式會call一個usleep, 但是看到有同事是使用pthread_yield,查了一下man 看不太出來差別,想要問一下版上大大們有沒有人知道差別 或者兩者分別是怎麼 implement之類的? 補充說明(Supplement): <底下是我另外的問題 跟 Coding無關,如果有大大知道也麻煩回答一下,感恩> 最近在想一個問題 恐龍本的 Process State Machine 應該有五個 分別是 New, Ready(載入記憶體中), Run(搶到CPU), Block (I/O 或者被 OS 搶走CPU) , Terminated(Normal 結束 或是有異常發生) 今天如果有一個Thread搶到CPU之後再Call Sleep 那在他Sleep 的這段時間,Process的狀態會是 1. Ready 2. Run (還是佔住CPU,等時間到再繼續執行) 3. Block (先Blocked 住,等Timer結束之後再發一個Interrupt把他叫醒) 請問大家覺得比較是哪一種可能? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.23.188.78

08/08 13:37, , 1F
1.http://ppt.cc/8KRm 2.block state
08/08 13:37, 1F

08/08 18:01, , 2F
感謝大大回應 問一下Block就如我所想像等待interrupt嘛?
08/08 18:01, 2F
文章代碼(AID): #1G8UgV2Y (C_and_CPP)
文章代碼(AID): #1G8UgV2Y (C_and_CPP)