美文网首页
关于muduo你应该知道的基本理论

关于muduo你应该知道的基本理论

作者: 我要吃面包 | 来源:发表于2017-05-13 22:31 被阅读0次

最近在看muduo,其中有些东西相对来说还是有些生涩。

  • 服务器模型
  • c/s模型
  • p2p模型
  • 两种高效的事件处理模式

  • Reactor

Paste_Image.png

Reactor模式是指主线程只负责监听文件描述符上是不是有事件发生,有的话就将该事件通知工作线程,除此之外,主线程不需要做其他任何工作,其他的数据读写、逻辑处理等都是在工作线程中完成的。

  • Proactor
Paste_Image.png

Proactor模式与Reactor一样,都是对某个IO事件进行通知,不同的是,Proactor模式中主线程不止监听文件描述符上的事件是否发生,还要完成所有的读写操作,而工作线程要做的只是处理逻辑问题。也就是说,Proactor模式将所有的I/O操作都交给主线程和内核来处理。

  • 两种高效的并发模式
    这里的“同步”和“异步”和“IO”的“同步”“异步”是完全不同的概念。在IO模型中,“同步”和“异步”区分的是内核向应用程序通知的是何种IO事件(是就绪事件还是完成事件),以及该由谁来完成IO读写(是应用程序还是内核)。在并发模式中,“同步”指的是程序完全按照代码序列的顺序执行;“异步”指的是程序的执行需要由系统事件来驱动。常见的系统事件包括中断、信号等。
  • 半同步/半异步模式
    • 半同步半异步反应堆模式
Paste_Image.png

半同步/半反应堆中,异步线程只有一个,即主线程,他负责监听所有事件,有事件发生则将事件插入请求队列中。工作线程休眠在请求队列中,当任务到来时,通过竞争获取任务处理权

  • 高效的半同步半异步
Paste_Image.png

主线程只管理监听socket,连接socket由工作线程来管理。当有新的连接到来时,主线程就接受之并将新返回的连接socket派发给某个工作线程,此后该socket上的任何IO操作都由被选中的工作线程来处理,直到客户端关闭连接。

  • 领导者/追随者模式
    这是多个工作线程轮流获得事件源集合,轮流监听、分发并处理时间的一种模式。在任意时间点,程序都仅有一个领导者线程,他负责监听I/O时间,而其他线程都是他的追随者,他们休眠在线程池中等待成为新的领导者。当前的领导者如果检测到I/O时间,首先从线程池中选出新的领导者线程,然后处理I/O事件。
  • epoll对文件描述符的操作有两种 :
  • ET边沿模式
    当往epoll内核事件表中注册一个文件描述符上的EPOLLET事件时,epoll将以ET模式来操作这个文件描述符。
  • LT电平触发
    LT模式是默认的工作模式。

对于采用LT工作模式的文件描述符,当epoll_wait检测到其上有事件发生并将此事件通知应用程序后,应用程序可以不立即处理该事件。当应用程序下次调用epoll_wait的时候,epoll_wait还会向应用程序通知此事件,直到该事件被处理。而对于采用ET工作模式的文件描述符,当epoll_wait检测到其上有事件发生并通知应用程序后,应用程序必须立即处理该事件,因为后续的epoll_wait将不在向应用程序通知此事件。

相关文章

  • 关于muduo你应该知道的基本理论

    最近在看muduo,其中有些东西相对来说还是有些生涩。 服务器模型 c/s模型 p2p模型 两种高效的事件处理模式...

  • muduo中的reactor

    muduo使用的是reactor模式,关于muduo的其他内容不做过多赘述。此文作为自己阅读muduo源码的笔记,...

  • muduo源码分析之TcpServer模块

    这次我们开始muduo源代码的实际编写,首先我们知道muduo是LT模式,Reactor模式,下图为Reactor...

  • muduo源码分析之muduo简单运用

    今天不先实现muduo项目,我们先来看下muduo库的基本使用,只有了解了如何用,才能在写代码的时候知道自己写的找...

  • muduo-base部分Timestamp

    muduo::copyable

  • 关于muduo库的调试

    其实在windows下已经可以调试linux下的程序了。 我老早就这么在干了,如果你要问我什么感觉,就一个字吧,爽...

  • 关于冥想,你应该知道的

    两千六百五十年前的一个烈日炎炎的午后,菩提树下,一个叫乔达摩·悉达多的男子,正静坐思索着解救众生脱离苦海的方法, ...

  • 关于落枕,你应该知道的

    落枕又称“失枕”,临床上,落枕以急性颈部肌肉痉挛、强直、酸胀、疼痛以致转动失灵为主要症状,轻者数日自愈,重者拖延数...

  • 关于“记忆”你应该知道的

    忘记是为了更好地记住 原来在学习生活中,我经常抱怨自己的记忆力差,老是忘记东西,今天我更新了一个观念:忘记是为...

  • 关于 iBeacon,你应该知道的

    iBeacon 最近比较火热,使用 iBeacon,可以推送折扣信息,可以实现室内定位,可以和微信摇一摇结合做 O...

网友评论

      本文标题:关于muduo你应该知道的基本理论

      本文链接:https://www.haomeiwen.com/subject/nqcfxxtx.html