IO 多路复用,源名称是 I/O multiplexing。 「multiplexing」在剑桥辞典的解释为:
an electronic process that allows more than one electrical signal to be sent using only one connection
意为:只在一个电路连接下可以发送多个信号的电子化过程。
这里的 multiplexing 指的是在单个线程通过记录跟踪每一个 Sock(I/O 流) 的状态来同时管理多个 I/O 流。
再通俗一点,就是单个线程管理多个 socket。现今主流的方法分别叫做 select,poll 和 epoll。
它们分别来自于 <sys/select.h>
,<sys/poll.h>
,<sys/epoll.h>
这三个头文件中。我们开发常用的 Mac OS 下,没有 epoll.h 的哦。所以如果你想试试 linux
的 epoll 最好找一台内核 2.5.44 以上的机器跑一下。比如说去你自己的 VPS 上,或者上你家主子的开发服务器上试一试。如果你想看源代码,推荐 select, poll, epoll。
不讲,答案在下一个问题。
如果你只是写简单的 Web 服务,那肯定是用不上的。如果你真想学一下,分别 gcc 跑一下这三个文件就知道了,都已经写好了。