前面我有说过多进程,多线程处理tcp服务器并发,但是其实还是有问题的。对于每新到来一个 TCP 连接,就需要分配一个进程或者线程,那么如果要达到 C10K,意味着要一台机器维护 1 万个连接,相当于要维护 1 万个进程/线程,如果是10万个呢?这个开销也太大了,所以操作系统就算死扛也是扛不住的。
因此这节我们引入I/O复用,要申请那么多个进程线程,开销太大,如果我们可以只使用一个去维护多个socket的话,开销就会小很多。这种技术就是I/O多路复用技术了~
目录
什么是I/O多路复用呢?
一个进程虽然任一时刻只能处理一个请求,但是处理每个请求的事件时,耗时控制在 1 毫秒以内,这样 1 秒内就可以处理上千个请求,把时间拉长来看,多个请求复用了一个进程,这就是多路复用,这种思想很类似一个 CPU 并发多个进程,所以也叫做时分多路复用。
I/O复用