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

培训网站推荐科技网站建设公司

培训网站推荐,科技网站建设公司,淘宝主图制作,有哪些做简历的网站一.webserver的组成部分 Buffer类 用于存储需要读写的数据 Channel类 存储文件描述符和相应的事件,当发生事件时,调用对应的回调函数 ChannelMap类 Channel数组,用于保存一系列的Channel Dispatcher 监听器,可以设置为epo…

一.webserver的组成部分

Buffer类

用于存储需要读写的数据

Channel类

存储文件描述符和相应的事件,当发生事件时,调用对应的回调函数

ChannelMap类

Channel数组,用于保存一系列的Channel

Dispatcher

监听器,可以设置为epoll类型/select类型/poll类型。

HttpRequest

保存请求状态的类。保存请求行协议,版本号等一系列相关信息。

HttpResponse

设置返回响应的相关状态

ThreadPool

线程池,保存正在运行或者阻塞的线程

TcpConnection

保存建立的连接,还有一系列进行消息传递的相关参数
在这里插入图片描述

二.调用流程

1.启动Httpserver服务器

1.初始化TcpServer : tcpServerInit

{
listenerInit  绑定+设置监听
eventLoopInit  创建事件循环(主线程)
threadPoolInit  创建线程池
}

启动httpserver服务器

2.调用tcpServerRun(server)方法

2.1启动线程池

threadPoolRun(server->threadPool)

采用for循环创建线程(workerThreadInit ),

并且对创建的线程运行(workerThreadRun):

workerThreadRun:pthread_create创建子线程的同时绑定调用函数subThreadRunningsubThreadRunning:eventLoopRun:启动子线程的反应堆模型循环进行事件处理调用dispatch进行检测,如果实现的是EpollDispatcher类,则运行的是epoll_wait方法,如果检测到了,调用fd对应的channel的相应事件的回调函数eventLoopProcessTask 处理任务队列

2.2封装监听的套接字

channelInit

添加任务到任务队列

eventLoopAddTask

3.启动反应堆模型

1. 检测有无就绪的事件, 并处理

	调用dispatch进行检测,如果实现的是EpollDispatcher类,则运行的是epoll_wait方法,如果检测到了,调用eventAtivate,传入参数有文件描述符和对应发生的事件,eventAtivate:根据fd从channelmap取出channel调用发生事件对应的回调函数。
如果是主反应堆,处理的是对绑定的端口的监听,如果监听到有事件发生,调用acceptConnection回调函数,和客户端建立连接,从线程池中取出一个子线程的反应堆实例, 去处理这个cfd,将cfd放到 TcpConnection中处理,然后调用eventLoopAddTask,把这个任务加到子线程的任务队列。
如果是子反应堆,反应堆一直循环调用以下函数,dispatch用于调用多分复用,eventLoopProcessTask处理任务队列,当任务队列存在任务时候,根据任务不同类型,调用相应的函数。
如果循环检查到任务队列有读请求,对接收到的httprequest进行解析,读取接收后调用 eventLoopAddTask(conn->evLoop, conn->channel, DELETE);往任务队列添加删除任务。
如果循环检查到任务队列有写请求,直接开始发送数据。
 dispatcher->dispatch(evLoop, 2);    // 超时时长 2seventLoopProcessTask(evLoop);

在这里插入图片描述
add任务:
eventLoopAdd函数:把对应的channel加入到对应线程的eventLoop的channelMap(一般是子线程),然后加入到epoll树中监听。

remove任务
eventLoopRemove函数:把对应的channel从对应线程的eventLoop的channelMap(一般是子线程)移除,从epoll树中移除监听。

modify任务:
eventLoopModify函数:把对应的channel的文件描述符修改在epoll树中的监听事件。

2. 继续处理任务队列中的任务

三、总体流程

在这里插入图片描述

http://www.15wanjia.com/news/14065.html

相关文章:

  • 山西正规网站建设报价公司制作一个简单的html网页
  • 做外贸比较好得网站无线网络优化工程师
  • 蚌埠城乡建设 局网站广州各区正在进一步优化以下措施
  • 个人做的卖货网站附近的教育培训机构有哪些
  • 盐田网站设计视频号链接怎么获取
  • 常熟网站制作如何做好营销
  • 购物网站单页模板微信客户管理系统平台
  • 网站升级页面连接设置青岛新闻最新消息
  • 在哪个网站做注册资本变更优化快速排名公司
  • 可信赖的武汉网站建设培训学校
  • 廊坊网站设计安卓优化大师官网
  • 个人网站备案名字不同黄石seo诊断
  • php自己写框架做网站无锡网站建设seo
  • 将一个网站拉入黑名单怎么做职业培训机构资质
  • wordpress添加水印有必要信阳seo优化
  • 重庆綦江网站制作公司哪家专业站长之家最新网站
  • 博彩网站做代理网站制作的要点和步骤详解
  • wap企业网站模板百度快照是什么意思?
  • 班级网站设计模板营销培训课程内容
  • 怎么做弹幕视频网站下载百度地图2022最新版官方
  • 哪个网站可以接程序项目来做视频推广一条多少钱
  • 做传感器的网站怎么建设自己的网站
  • 北京微信网站建设电话咨询长春网络推广优化
  • 为什么要建微网站百度权重高的发帖网站
  • 怎么做一张图片的网站百度查关键词显示排名
  • 网站seo怎么做知乎网站创建流程
  • 教育营销型的网站建设市场调研分析报告
  • 网站分享功能怎么做北京百度公司总部电话
  • 成都建设网站首页百度推广营销中心
  • 域名网站建设seo搜索排名优化方法