Windows 上最好用的是iocp,Linux 上是epoll,这是毋庸置疑的,但是两者有明显不同,iocp在完成时就已经io结束,而epoll则只是事件通知你可读可写。如果要设计成跨平台的话,建议将epoll封装成iocp的样子,虽然目前好像没人这样做。如果说像redis那样,为了迁就unix的poll/epoll通知模型,用iocp投递0字节读拿可读通知,或者post事件拿可写通知,那么性能将非常低,甚至不如select模型。大部分做跨平台开发的都是unix主导,他们不懂iocp,例如nginx,多少年过去了,他都没有支持iocp。redis对iocp有支持,libuv也有,但是就我上面说的问题,虽然实现了iocp,但是性能低。