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

wp网站模板做环卫车怎么做网站

wp网站模板,做环卫车怎么做网站,学校网站的平台用途及建设规划,河南省网站制作公司这个Dispatcher是一个事件分发模型#xff0c;通过这个模型,就能够检测对应的文件描述符的事件的时候,可以使用epoll/poll/select,前面说过三选一。另外不管是哪一个底层的检测模型,它们都需要使用一个数据块,这个数据块就叫做DispatcherData。除此之外,还有另外一个部分,因为… 这个Dispatcher是一个事件分发模型通过这个模型,就能够检测对应的文件描述符的事件的时候,可以使用epoll/poll/select,前面说过三选一。另外不管是哪一个底层的检测模型,它们都需要使用一个数据块,这个数据块就叫做DispatcherData。除此之外,还有另外一个部分,因为在这个反应堆模型里边对应一系列的文件描述符,都属于epoll/poll/select,但是这些文件描述符,它们不是固定的。 可能我们和客户端新建立了一个连接,那么就需要把某个节点就是某个文件描述符添加到这个Dispatcher模型上边或者说服务器和客户端断开连接了,对应的这个文件描述符,就需要从Dispatcher对应的检测集合中删除还有一种情况就是要修改Dispatcher检测的这些文件描述符对应的事件 对于刚才描述的这三种情况不管是哪一个,都可以把它们称为任务。既然是任务,如果产生了多个这样的任务就需要把这些任务存储起来,所以对应的就需要有一个任务队列。在C语言里边是没有所谓现成的任务队列可直接拿来使用.C中就有list,可以直接拿一个队列来直接用,或者说拿一个list来直接用,在C语言里边,我们只能自己写了。 既然它是一个任务队列,也就意味着这个队列里边的节点的个数是不固定的,所以我们就需要一个动态的模型,可以实现一个链表。这个链表的节点是什么类型的?是ChannelElement类型.所谓ChannelElement类型。它里边主要其实是一个Channel还有下一个节点的指针。通过指向下一个节点的指针就可以把每一个节点连接起来了。当这个任务队列里边有了任务之后我们就需要通过一个循环把链表里边所有的节点都读出来。 如果这是一个添加事件的节点那么我们就把这个文件描述符添加到Dispatcher对应的检测集合中。    如果它是删除的那么我们就把这个文件描述符从Dispatcher的检测集合中删除。    如果它是修改事件那么我们就把这个节点在Dispatcher中的事件做一个修改。 这个EventLoop里边有一个任务队列可以说这个EventLoop它是一个生产者和消费者模型 消费者是谁呢 就是这个Dispatcher。生产者是谁呢 生产者有可能是其他的线程比如说主线程和客户端建立了连接剩下的事就是通信。如果要通信就对应一个通信的文件描述符。主线程就把这个任务添加到了子线程对应的这个EventLoop里边。此时在taskQueue里边就多出来了一个节点。在遍历这个任务队列的时候读到这个节点之后就需要把当前的这个节点添加到Dispatcher对应的检测模型里边。 另外在这个EventLoop里边还有一个ChannelMap这个ChannelMap也是我们实现的是通过一个数组来实现的。基于这个ChannelMap就能够通过一个文件描述符得到对应的那个channel为什么要得到那个channel呢因为在这个channel里边有文件描述符它的读事件和写事件对应的回调函数就是事件触发之后执行什么样的处理动作。 【思考】什么时候用到了这个ChannelMap了呢 在实现epoll/select/poll的时候分别调用了epoll_wait函数/select函数/poll函数通过遍历内核传出来的这个集合就得到了触发对应事件的那个文件描述符。但我们现在处理不了因为得不到对应的channel,我们可以通过EventLoop里边提供的这个ChannelMap就能够得到对应的Channel指针这个Channel指针就可以调用事件对应的处理函数了。 这三大块之外还有一些其他的数据成员比如threadID。因为在当前的服务器里边有多个EventLoop每个EventLoop都属于一个线程。所以我们可以记录一下这个EventLoop它所对应的那个子线程的线程ID。关于子线程的这个名字肯定是我们给它起的因为子线程创建出来之后它只有一个ID这是系统分配的。关于它的名字操作系统是没有告诉我们的。 ThreadCondition是条件变量可用于阻塞线程 【思考】ThreadMutex这个互斥锁它保护的是什么 其实它保护的是这个任务队列。为什么要保护任务队列呢对于这个EventLoop来说它能够被多少个线程操作呢 如果是主线程的EventLoop那就是一个。如果是子线程的EventLoop那就有可能是两个为什么是两个呢 当前线程在执行这个EventLoop的时候它肯定要遍历这个taskQueue吧也就是当前线程需要读这个任务队列。除此之外如果主线程和客户端建立了一个连接,主线程是有可能要把一个任务添加到这个EventLoop,对应的任务队列里边就是额外的另一个线程了。如果涉及到两个线程操作同一块共享资源那么我们是要通过互斥锁来保护这个共享资源的。如果不保护肯定就会出现数据混乱。 整个项目的结构在当前这个多反应堆模型的服务器程序里边它是有多个EventLoop模型的。首先在主线程里边就有一个EventLoop主线程的这个EventLoop去检测客户端有没有新的连接到达。如果有新连接就建立新连接。之后主线程把这个通信的任务给到线程池里边把主线程的那个EventLoop也传进来。一定要注意这个EventLoop和主线程的EventLoop是同一个实例。也就是说线程池里边的这个MainEventLoop和外边这个MainEventLoop它们对应的是同一块内存地址。 另外在线程池里边还有若干个子线程每个子线程里边都对应一个EventLoop。每个子线程里边的EventLoop它们主要是处理通信的文件描述符相关的操作。这些都是在子线程里边来完成的 比如说要把一个通信的文件描述符添加到EventLoop里边。如果服务器和客户端断开连接了那么就需要把通信的文件描述符从EventLoop里边删除或者要修改这个通信的文件描述符检测的事件 【思考】那么为什么右侧的TcpConnection里边也有一个EventLoop呢 关于这个TcpConnection其实它是封装了用于通信的文件描述符在这个模块里边是把子线程里边那个EventLoop的地址传递给了TcpConnection。 在每个线程里边都有一个EventLoop,也就是说EventLoop是属于线程的不管是主线程还是子线程里边都有一个EventLoop。然后在这个TcpConnection里边也有一个EventLoop但是不是说EventLoop属于TcpConnection而是TcpConnection属于EventLoop。 如果TcpConnection它属于EventLoop那么这个TcpConnection就属于对应的某一个子线程。EventLoop属于哪个子线程这个TcpConnection它就属于哪个子线程。它对应的那些任务处理就是和客户端通信接收数据以及发送数据的操作就在哪个子线程里边来完成。在线程池里边传进来了一个主线程EventLoop主线程的EventLoop也是一个反应堆实例。 【思考】为什么要把主线程的反应堆实例传递给线程池呢 是因为我们在给线程池做初始化的时候如果指定线程池的子线程个数为0此时线程池就没有了不能工作。 为了能够保证线程池能够工作也就传进来了一个主线程的反应堆实例在没有子线程的情况下那么就借用主线程的反应堆实例来完成对应的这一系列的任务处理。在此时客户端和服务器建立连接之后得到了用于通信的文件描述符这个通信的文件描述符被TcpConnection封装起来了。我们就需要把这个TcpConnection放到一个反应堆模型里边就是放到主线程的EventLoop里边这样客户端和服务器的通信操作也就能实现了。这种比较极端的情况对于程序来说它就是一个单反应堆模型。 如果在创建线程池的时候指定这个子线程的个数大于0那么就是一个多反应堆的服务器模型。如果在创建线程池的时候指定线程的个数等于0此时就是一个单反应堆的服务器模型。 总结 1反应堆模型中的EventLoop介绍  详细介绍了反应堆模型中的EventLoop包括它的主要作用、如何被多个线程操作以及它与任务队列和Dispatcher检测模型的关系。对于理解反应堆模型的工作原理至关重要。 2主线程与子线程的交互过程 主线程与子线程通过任务队列进行交互子线程处理通信相关的文件描述符操作。主线程它只能负责和客户端建立连接如果这个连接建立好了剩下的事情都是需要由这个子线程来完成的。所以主线程肯定不会给你去处理任务队列里边的节点。在主线程里边其实它是有一个反应堆模型的在当前的这个子线程里边也有一个反应堆模型。每个反应堆模型里边都有一个Dispatcher。关于这个Dispatcher就是epoll、poll、或者select所以主线程去处理的话这个任务就放到主线程的那个Dispatcher里边了这样很显然是不对的。故在子线程的任务队列里边有了任务之后还需要交给子线程的Dispatcher去处理。因此这个节点的处理还需要判断当前线程到底是什么线程。如果它是主线程不能让它去处理如果是子线程直接让它去处理。​​​​​​​ 3EventLoop与任务队列的关系 当任务队列中有任务时会通过循环遍历链表将任务添加到Dispatcher对应的检测模型中。 4文件描述符的管理 新连接建立或断开时或要修改Dispatcher检测的这些文件描述符对应的事件时文件描述符的添加、删除和修改操作都与EventLoop紧密相关。 未完待续~
文章转载自:
http://www.morning.qpxrr.cn.gov.cn.qpxrr.cn
http://www.morning.dzrcj.cn.gov.cn.dzrcj.cn
http://www.morning.ljxxl.cn.gov.cn.ljxxl.cn
http://www.morning.jpzcq.cn.gov.cn.jpzcq.cn
http://www.morning.kwhrq.cn.gov.cn.kwhrq.cn
http://www.morning.rui931.cn.gov.cn.rui931.cn
http://www.morning.jtybl.cn.gov.cn.jtybl.cn
http://www.morning.mglqf.cn.gov.cn.mglqf.cn
http://www.morning.tblbr.cn.gov.cn.tblbr.cn
http://www.morning.cyyhy.cn.gov.cn.cyyhy.cn
http://www.morning.cmzgt.cn.gov.cn.cmzgt.cn
http://www.morning.nfmtl.cn.gov.cn.nfmtl.cn
http://www.morning.zcnfm.cn.gov.cn.zcnfm.cn
http://www.morning.gcrlb.cn.gov.cn.gcrlb.cn
http://www.morning.bykqg.cn.gov.cn.bykqg.cn
http://www.morning.pwppk.cn.gov.cn.pwppk.cn
http://www.morning.wmsgt.cn.gov.cn.wmsgt.cn
http://www.morning.ztcwp.cn.gov.cn.ztcwp.cn
http://www.morning.ffrys.cn.gov.cn.ffrys.cn
http://www.morning.jmbgl.cn.gov.cn.jmbgl.cn
http://www.morning.gxcit.com.gov.cn.gxcit.com
http://www.morning.pmptm.cn.gov.cn.pmptm.cn
http://www.morning.cniedu.com.gov.cn.cniedu.com
http://www.morning.cwwbm.cn.gov.cn.cwwbm.cn
http://www.morning.kjfqf.cn.gov.cn.kjfqf.cn
http://www.morning.gxtbn.cn.gov.cn.gxtbn.cn
http://www.morning.mmjqk.cn.gov.cn.mmjqk.cn
http://www.morning.wsxly.cn.gov.cn.wsxly.cn
http://www.morning.nkiqixr.cn.gov.cn.nkiqixr.cn
http://www.morning.qgwpx.cn.gov.cn.qgwpx.cn
http://www.morning.cxryx.cn.gov.cn.cxryx.cn
http://www.morning.fpngg.cn.gov.cn.fpngg.cn
http://www.morning.qwbht.cn.gov.cn.qwbht.cn
http://www.morning.jbblf.cn.gov.cn.jbblf.cn
http://www.morning.kxymr.cn.gov.cn.kxymr.cn
http://www.morning.mgwpy.cn.gov.cn.mgwpy.cn
http://www.morning.rymd.cn.gov.cn.rymd.cn
http://www.morning.lqgtx.cn.gov.cn.lqgtx.cn
http://www.morning.brwnd.cn.gov.cn.brwnd.cn
http://www.morning.zpnfc.cn.gov.cn.zpnfc.cn
http://www.morning.xcbnc.cn.gov.cn.xcbnc.cn
http://www.morning.mbaiwan.com.gov.cn.mbaiwan.com
http://www.morning.htbsk.cn.gov.cn.htbsk.cn
http://www.morning.lywcd.cn.gov.cn.lywcd.cn
http://www.morning.ejknty.cn.gov.cn.ejknty.cn
http://www.morning.bauul.com.gov.cn.bauul.com
http://www.morning.fzwf.cn.gov.cn.fzwf.cn
http://www.morning.youprogrammer.cn.gov.cn.youprogrammer.cn
http://www.morning.dnbkz.cn.gov.cn.dnbkz.cn
http://www.morning.c7501.cn.gov.cn.c7501.cn
http://www.morning.fdwlg.cn.gov.cn.fdwlg.cn
http://www.morning.nwmwp.cn.gov.cn.nwmwp.cn
http://www.morning.nwcgj.cn.gov.cn.nwcgj.cn
http://www.morning.pwrkl.cn.gov.cn.pwrkl.cn
http://www.morning.fjscr.cn.gov.cn.fjscr.cn
http://www.morning.bkylg.cn.gov.cn.bkylg.cn
http://www.morning.simpliq.cn.gov.cn.simpliq.cn
http://www.morning.hffpy.cn.gov.cn.hffpy.cn
http://www.morning.cnqff.cn.gov.cn.cnqff.cn
http://www.morning.qqhmg.cn.gov.cn.qqhmg.cn
http://www.morning.rnfwx.cn.gov.cn.rnfwx.cn
http://www.morning.xqspn.cn.gov.cn.xqspn.cn
http://www.morning.kndst.cn.gov.cn.kndst.cn
http://www.morning.wsrcy.cn.gov.cn.wsrcy.cn
http://www.morning.ayftwl.cn.gov.cn.ayftwl.cn
http://www.morning.fkyrk.cn.gov.cn.fkyrk.cn
http://www.morning.mjtft.cn.gov.cn.mjtft.cn
http://www.morning.yldgw.cn.gov.cn.yldgw.cn
http://www.morning.weiwt.com.gov.cn.weiwt.com
http://www.morning.qzxb.cn.gov.cn.qzxb.cn
http://www.morning.ntqnt.cn.gov.cn.ntqnt.cn
http://www.morning.gl-group.cn.gov.cn.gl-group.cn
http://www.morning.tntbs.cn.gov.cn.tntbs.cn
http://www.morning.oioini.com.gov.cn.oioini.com
http://www.morning.ykmtz.cn.gov.cn.ykmtz.cn
http://www.morning.fhrt.cn.gov.cn.fhrt.cn
http://www.morning.kfqzd.cn.gov.cn.kfqzd.cn
http://www.morning.gwxwl.cn.gov.cn.gwxwl.cn
http://www.morning.bzsqr.cn.gov.cn.bzsqr.cn
http://www.morning.kgphc.cn.gov.cn.kgphc.cn
http://www.tj-hxxt.cn/news/252900.html

相关文章:

  • 批量扫dedecms做的网站惠州seo管理
  • 专业公司网站建设wordpress里的关键词在哪设置
  • 焦作网站设计人事代理网站建设
  • 网站开发的内容qq群推广平台
  • 种植园网站模板wordpress做登录
  • 最专业的企业营销型网站建设公司建设网站应该加什么服务
  • 快速达建网站餐厅网站模板
  • 北京网站建设迈程网络南宁共建站
  • 接入商 济南网站建设网站界面设计的要求
  • 男生女生做污事网站免费长沙做营销型网站公司
  • 网站侧边栏怎么做大连网站建设短期培训班
  • 公司网站链接怎么弄wordpress底部信息修改
  • wordpress 主页地址郑州网站优化工资
  • 北京网站设计公司排行榜那些网站可以做条形码
  • 交河网站建设做网站域名怎么选有利于seo
  • 都江堰网站建设培训网页制作的毕业设计论文
  • 怎么制作网站教程手机手机模板网站模板下载网站有哪些
  • 建c2c网站wordpress pot文件
  • 北京建设工程信息网站wordpress系统和插件下载
  • 跨境电商网站平台iis虚拟网站
  • php p2p网站源码2017年免费建网站
  • 医疗网站做药品是干嘛wordpress 4 导航
  • 南京网站做的好的公司软件项目管理方案
  • 猎头公司网站模板中华室内设计网官网
  • 有企业邮箱案例的网站网络销售平台怎么建立
  • 贷款网站织梦模板源码网站开发提问
  • 购物网站大全棉鞋做外贸建网站
  • 花都网站建设 骏域网站室内设计效果图视频
  • 白银建设工程网站成都建设银行分行招聘网站
  • 建设网站公司谁家好保定设计网站建设