Re: [問題] sleep VS pthread_yield

看板C_and_CPP作者 (cwei)時間11年前 (2012/08/08 17:16), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《mingcloud (逆宇)》 : 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把他叫醒) : 請問大家覺得比較是哪一種可能? sleep 一般就是時間還沒到時你的thread 還是處於block的State,yeild的話就是主動讓出 你自己的time slot, 一般是直接跳回Ready的queue, 系統上沒有任何其他的東西在跑的話 馬上又輪到你了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 96.44.187.51

08/08 18:02, , 1F
那所以Block之後還是先回ready之後再等
08/08 18:02, 1F

08/08 18:02, , 2F
short time scheduler 把你排進cpu中嘛?
08/08 18:02, 2F
文章代碼(AID): #1G8YvN-E (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1G8YvN-E (C_and_CPP)