推 can18: 上面是Cpu如何處理I/O 12/31 09:10
→ can18: 下面是user process如何handle IO 12/31 09:11
→ can18: 我猜兩個應該是完全不相關的 12/31 09:12
推 TWkobe: 可以相關或不相關 下面更是描述整個 12/31 11:48
→ TWkobe: Io event 的處理流程 12/31 11:49
→ q5332159: 我目前理解是blocking io是不載入新的process然後是inte 12/31 13:19
→ q5332159: rrupted io 12/31 13:19
→ q5332159: Non blocking是載入新的但是polling 12/31 13:19
→ q5332159: 然後asynchronous io是載入新的然後interrupted io 12/31 13:20
→ q5332159: 請問這樣理解正確嗎? 12/31 13:20
推 TWkobe: 你可以想像socket通訊中 某個個server 12/31 14:08
→ TWkobe: 有許多task在listen client端的請求 12/31 14:08
→ TWkobe: 若是blocking io ,假設沒有pending request 12/31 14:09
→ TWkobe: 則會被強迫一直等到client端有請求 12/31 14:10
推 TWkobe: 而nonblocking就可以此時切換下一個task作別的事 12/31 14:11
→ TWkobe: 至於怎麼檢查有沒有pending你要用polling 12/31 14:13
→ TWkobe: 或interrupt都可以 所以block/nonblocking 12/31 14:13
→ TWkobe: 看得是一整個流程 12/31 14:14
推 TWkobe: 或者也可以用生產者消耗者問題來思考也行 12/31 14:15
→ q5332159: 了解~那可以再問一下non-blocking和asynchronous差別嗎 12/31 15:02
→ q5332159: ?覺得兩個好像~ 12/31 15:02