当前位置: 首页 > news >正文

广告推广网站建设今日的最新新闻

广告推广网站建设,今日的最新新闻,云卡会员管理系统,云南工程建设信息网站文章目录1、连接池2、epoll两种工作模式2.1、LT模式2.2、ET模式3、后端开发面试题4、epoll验证1、连接池 将每一个套接字和一块内存进行绑定,连接池就是一个结构体数组,通过链表来维护一个空闲连接。 1、ngx_get_connection(int fd)从空闲链表取一个空闲…

文章目录

  • 1、连接池
  • 2、epoll两种工作模式
    • 2.1、LT模式
    • 2.2、ET模式
  • 3、后端开发面试题
  • 4、epoll验证

1、连接池

在这里插入图片描述

将每一个套接字和一块内存进行绑定,连接池就是一个结构体数组,通过链表来维护一个空闲连接。
1、ngx_get_connection(int fd)从空闲链表取一个空闲连接,然后指向头的指针指向后面一个元素,然后将sock对应给到这个空闲连接中,然后返回这个结构体指针。
2、ngx_epoll_add_event将监听套接字,添加到红黑树上,

3、ngx_epoll_process_events内容:
事件驱动:通过获取到的事件,调用适当的函数,让整个程序干活

2、epoll两种工作模式

2.1、LT模式

LT也叫水平触发,这种工作模式是,低速模式(效率差)–默认缺省用次模式,来一个事件,不处理的话,就会一直触发(也就是循环调epoll_wait的时候每次都会有这个事件),能保证不会丢失事件,因为内核会反复通知。

2.2、ET模式

ET边沿触发,这种工作模式是,高速模式(效率高),只能对非阻塞套接字用,来一个事件,内核只通知一次(不管是否处理,内核都不在通知你)只需要增加EPOLLET(epl_ev.events)

事件驱动框架
在这里插入图片描述

就是由一些事件源(三次握手内核通知,事件发生源就是客户端),通过事件收集器和事件分发器(调用函数处理)【事件收集器:epoll_wait()】【accept() read()都属于事件处理函数】,

3、后端开发面试题

问题:使用epoll模型,水平触发模式,当socket可写时,会不停的触发可写事件,怎么处理?
1、需要向socket中写的时候才把socket加入红黑树中,等待可写事件,接受可写事件之后调用write()函数,写完之后,将socket移除红黑树。
2、开始不把socket加入epoll,需要写数据的时候,直接调用write函数,如果返回EAGAIN把socket加入epoll中,全部数据写完移除epoll。

4、epoll验证

将套接字设置为非阻塞,然后将epoll_wait设置为阻塞,会阻塞在那里等有事件来才会往下走,如果是水平触发,要是没有处理就有一直触发

#include <unistd.h>
#include <sys/wait.h>
#include <strings.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <sys/time.h>
#include <errno.h>
#include <signal.h>
#include <stdio.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <sys/select.h>
#include <poll.h>
#include <sys/epoll.h>
#include <sys/ioctl.h>
#define OPEN_MAX 1024void epollTest()
{// 1、创建socketint fd = socket(AF_INET,SOCK_STREAM,0);if(fd<0){printf("socket err\n");return;}// 设置TIME_WAIT状态导致bind失败int reuseaddr = 1;if(setsockopt(fd,SOL_SOCKET,SO_REUSEADDR,(const void*)&reuseaddr,sizeof(reuseaddr)) == -1){printf("setsockopt err\n");return;}// 设置为非阻塞int nb=1; //0:清除,1:设置  if(ioctl(fd, FIONBIO, &nb) == -1){printf("ioctl err\n");return;}// bind listenstruct sockaddr_in serv_addr;bzero(&serv_addr,sizeof(serv_addr));serv_addr.sin_family = AF_INET;serv_addr.sin_port = htons(9999);serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);if(bind(fd,(struct sockaddr*)&serv_addr,sizeof(serv_addr))<0){printf("bind err\n");return;}listen(fd,128);// 创建红黑树int epoll_fd = epoll_create(OPEN_MAX);if(epoll_fd == -1){printf("epoll_create err");return;}// 添加到红黑树种struct epoll_event epl_ev;epl_ev.events = EPOLLIN;epl_ev.data.fd = fd;if(epoll_ctl(epoll_fd,EPOLL_CTL_ADD,fd,&epl_ev) == -1){printf("epoll_ctl err");return;}// 等待事件struct epoll_event ep[OPEN_MAX];while(true){int nready = epoll_wait(epoll_fd,ep,OPEN_MAX,5000);printf("nready:%d\n",nready);for(int i=0;i<nready;i++){if(!(ep[i].events & EPOLLIN))   // 不是读事件{continue;}else{if(ep[i].data.fd == fd){printf("连接事件\n");}}}}}int main()
{epollTest();return 0;
}
http://www.ysxn.cn/news/3670.html

相关文章:

  • wordpress培训类网站模板seo网址优化靠谱
  • 北京网站制作一般多少钱电商平台有哪些
  • 药品和医疗器械网站icp备案前置审批流程连接友谊
  • 网站平台建设多少钱杭州网站优化培训
  • 设计免费素材网站有哪些十大it教育培训机构排名
  • 微信连接微网站产品推广朋友圈文案
  • 维力安网站建设公司优化网站建设seo
  • 网站建设对电子商务中的作用搜索关键词优化服务
  • 软件商店下载电脑版官网南京seo关键词排名
  • 免费网站制作模板网络推广和信息流优化一样么
  • 武汉做网站找哪家海南乐秀同城群软件下载
  • 给网站做备案谷歌外贸平台
  • 想做个赚钱的网站不知道做那种2023广东最新疫情
  • 网站服务器的作用在哪里打广告效果最好
  • 网站返回顶部怎么做网页设计友情链接怎么做
  • 帝国cms影视网站模板免费com域名申请注册
  • 做网站的好框架2024免费网站推广大全
  • 网站前台怎么套用织梦后台品牌广告投放
  • wordpress屏蔽右键菜单并提示宁波seo推广优化
  • 做网站的一定要开80或8080端口品牌广告和效果广告的区别
  • 衡水做网站设计外贸建站优化
  • 成都网站建设优创智汇矿坛器材友情交换
  • 医疗网站建设计划书淘宝seo对什么内容优化
  • 双语教学示范课程建设项目网站口碑营销例子
  • 佳木斯城乡建设局网站杭州小周seo
  • web前端如何仿网站seo网站营销推广公司
  • 建设网站利用点击量赚钱互联网营销师报名费
  • 什么网站可以免费做视频的软件下载百度关键词指数
  • 怎么给新公司做网站seo自动推广工具
  • 凡科网站制作教程百度推广助手app下载