为何 epoll 的 ET 模式一定要设置为非阻塞IO
生活随笔
收集整理的這篇文章主要介紹了
为何 epoll 的 ET 模式一定要设置为非阻塞IO
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
ET模式下每次write或read需要循環(huán)write或read直到返回EAGAIN錯(cuò)誤。以讀操作為例,這是因?yàn)镋T模式只在socket描述符狀態(tài)發(fā)生變化時(shí)才觸發(fā)事件,如果不一次把socket內(nèi)核緩沖區(qū)的數(shù)據(jù)讀完,會(huì)導(dǎo)致socket內(nèi)核緩沖區(qū)中即使還有一部分?jǐn)?shù)據(jù),該socket的可讀事件也不會(huì)被觸發(fā)
根據(jù)上面的討論,若ET模式下使用阻塞IO,則程序一定會(huì)阻塞在最后一次write或read操作,因此說ET模式下一定要使用非阻塞IO
轉(zhuǎn)載于:https://www.cnblogs.com/developing/p/10888544.html
總結(jié)
以上是生活随笔為你收集整理的为何 epoll 的 ET 模式一定要设置为非阻塞IO的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 工作计划的困惑
- 下一篇: 常见模块设计--数据字典