ET模式下每次write或read需要循環write或read直到返回EAGAIN錯誤。以讀操作為例,這是因為ET模式只在socket描述符狀態發生變化時才觸發事件,如果不一次把socket內核緩沖區的數據讀完,會導致socket內核緩沖區中即使還有一部分數據,該socket的可讀事件也不會被觸發
根據上面的討論,若ET模式下使用阻塞IO,則程序一定會阻塞在最后一次write或read操作,因此說ET模式下一定要使用非阻塞IO
ET模式下每次write或read需要循環write或read直到返回EAGAIN錯誤。以讀操作為例,這是因為ET模式只在socket描述符狀態發生變化時才觸發事件,如果不一次把socket內核緩沖區的數據讀完,會導致socket內核緩沖區中即使還有一部分數據,該socket的可讀事件也不會被觸發
根據上面的討論,若ET模式下使用阻塞IO,則程序一定會阻塞在最后一次write或read操作,因此說ET模式下一定要使用非阻塞IO
本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。