Re: [問題] sleep VS pthread_yield
※ 引述《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
08/08 18:02, 1F
→
08/08 18:02, , 2F
08/08 18:02, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):