前一篇文章提到了,多线程/多进程虽然能够在一定程度上解决并发,但是由于进程/线程的切换消耗系统资源,多余并发量比较大的服务无法支持,因此为了解决大并发场景,需要一种能够支持更多并发的方法----IO复用, 与多线程/进程相比,IO复用最大的优点是避免了线程进程切换时产生的系统开销,内核不用创建线程也不用再维护这些线程了,这样就避免了很多不必要的开销。
本文介绍一种IO复用模型,select模型,其基本流程如下:
select模型的允许进程指示内核等待多个事件的任何一个发生,并在只有一个或者多个事件发生或者经历一段事件后select函数才返回,函数原型如下:
#include<sys/select.h>
#include <sys/time.h>
int select(int maxfdp1,fd_set* readset, fd_set *writeset, fd_set