TCP并发模型:
1.TCP多线程模型:
缺点:
1.创建线程会带来资源开销,能够实现的并发量比较有限
2.IO模型:
1.阻塞IO:
没有数据到来时,可以让任务挂起,节省CPU资源开销,提高系统效率
2.非阻塞IO:
程序未接收到数据时一直执行,效率很低
3.异步IO
只能绑定一个文件描述符用来读取数据
4.多路复用IO
select
poll
epoll
3.函数接口:
1.select
int select(int nfds, fd_set *readfds, fd_set *writefds,
fd_set *exceptfds, struct timeval *timeout);
功能:
select监听文件描述符集合中是否有文件描述编程ready状态
功能:
nfds:最大文件描述符的值+1
readfds:读文件描述符集合
writefds:写文件描述符集合
exceptfds:其余文件描述符集合
timeout:等待的时长
NULL 一直等待
返回值:
成功返回文件描述符集合中的文件描述符个数
失败返回-1
void FD_CLR(int fd, fd_set *set);
功能:
将文件描述符fd从集合中清除
int FD_ISSET(int fd, fd_set *set);
功能:
判断文件描述符fd是否仍在集合中
void FD_SET(int fd, fd_set *set);
功能:
将文件描述符fd加入到集合中
void FD_ZERO(fd_set *set);
功能:
将文件描述符集合清0