您的位置:首页 > 汽车 > 时评 > 网站设计流程软件_代理好项目_seo系统教程_连云港百度推广总代理

网站设计流程软件_代理好项目_seo系统教程_连云港百度推广总代理

2025/5/24 9:51:34 来源:https://blog.csdn.net/2301_77067762/article/details/146077835  浏览:    关键词:网站设计流程软件_代理好项目_seo系统教程_连云港百度推广总代理
网站设计流程软件_代理好项目_seo系统教程_连云港百度推广总代理

单循环服务器:服务器同一时刻只能响应一个客户端的请求

并发服务器:服务器同一时刻可以响应多个客户的请求

TCP并发服务器:

1.多进程: 资源消耗大,同资源平台下,并发量小。

2.多线程:创建线程资源消耗小,但是比较耗时。

3.线程池:提前预创建大量线程,避免任务执行过程中创建线程的耗时

4.IO多路复用()select.poll.epoll(类似于生产者和消费者模式)

     在不创建新的进程和线程的前提下,可以在一个进程中同时监测多个IO(fd/sockfd/connfd)

优点:节省资源
不足:不利于处理比较耗时,延时比较长的任务

创建步骤:1. 创建文件描述符集合
                  2. 将关注的文件描述符加入到集合
                  3. 等待IO事件到达
                  4. 根据不同的IO事件处理不同的任务

(1)select

int select(int nfds, fd_set *readfds, fd_set *writefds,
                  fd_set *exceptfds, struct timeval *timeout);
       功能:阻塞等待IO事件,返回事件结果
       参数:
                     nfds:关注的最大文件描述符+1
                     readfds:文件描述符读事件集合表
                     writefds:写事件集合表
                     exceptfds:其他事件集合表
                     timeout:超时时间
                                    NULL:不设置超时
       返回值:
              成功:返回到达的事件个数
              失败:-1
              0:超时事件到达但没有IO事件


       void FD_CLR(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);

特点:1. select使用位图管理文件描述符,最多允许同时监测1024个文件描述符(有上限);
           2. 文件描述符集合在应用层创建,需要实现应用层和内核层的反复拷贝
           3. 需要应用层对集合表进行遍历,寻找到达的事件
           4. 只能工作在水平触发模式(低速模式),不能工作在边沿触发模式(高速模式) 

                                               select在应用层和内核层的拷贝以及返回操作

                                                IO多路复用的流程图

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com