IO多路复用+阻塞式。仅使用一个线程就可以实现对多个描述符的状态管理,但由于IO输入输出调用本身是阻塞的,可能出现某个IO输入输出过慢,影响其他描述符的效率,从而体现出整体性能不高。此种方式编程难度比较低。单考虑read是不需要的,不过考虑到write的时候,由于对端的速率未知,可能影响整体性能。
一般不需要设置。因为fd的NON_BLOCK会增加程序的复杂度,数据写没写完还要额外判断,加上epoll是回调机制,这样还需要维护另外一个逻辑。网络速度现在很快了,一般读写都是可以立即返回的。没必要。