我最近在读 Redis。Redis 实现了一个基于 I/O 多路复用的简单事件驱动库。Redis 表示会选择系统支持的最佳复用,并给出如下代码:
/* Include the best multiplexing layer supported by this system.
* The following should be ordered by performances, descending. */
#ifdef HAVE_EVPORT
#include "ae_evport.c"
#else
#ifdef HAVE_EPOLL
#include "ae_epoll.c"
#else
#ifdef HAVE_KQUEUE
#include "ae_kqueue.c"
#else
#include "ae_select.c"
#endif
#endif
#endif
我想知道他们是否有根本的性能差异?如果是这样,为什么?
此致