TCP服务端并发模型
单循环服务器:服务端同一时间只能处理一个客户端的任务
多循环服务器:服务端同一时间处理多个客户端的任务
TCP服务端并发模型:
1 多进程
进程资源开销大;安全性高
2 多线程
线程相对与进程资源开销小,相同资源环境下,并发量比进程大。
3.线程池
为了解决多线程或多进程模型,在服务器运行过程中,频繁创建和销毁线程(进程)带来的时间消耗问题。
基于生产者和消费者编程模型,以及任务队列等,实现的一套多线程框架。
4.IO多路复用
I-->O:fd
对多个文件描述符的读写可以复用个进程。
在不创建新的进程和线程的前提下,使用一个进程实现对多个文件读写的同时监测。
fgets(stdin);
recv(connfd);
1)select实现io多路复用:
(1)创建文件描述符集合 fd_set
(2)添加关注的文件描述符到集合 FD_SET
(3)使用select传递集合表给内核,内核开始检测事件select()
(4)当内核监测到事件时,应用层select将解除阻塞,并获得相关的事件结果
(5)根据select返回的结果做不同的情况处理
void FDCLR(int fd,fd set*set);
int FD_ISSET(int fd,fd_set *set);
void FD_SET(int fd,fd_set *set);
void FD_ZERO(fd_set *set)