select 调用select可以监听多个socket,当select查询到的socket可读时,客户端可以调用读操作,避免了阻塞客户端。但是每次调用select都要轮询检查所有socket,代价太大。epoll与kqueue就是解决这种问题,在socket可读时候,给socket注册某个回调函数,当它们活跃时候,自动完成相关操作。