您好,欢迎来到宝玛科技网。
搜索
您的当前位置:首页Reactor模式与Proactor模式

Reactor模式与Proactor模式

来源:宝玛科技网

  博主一脚刚踏进分布式的大门(看《分布式Java应用》,如果大家有啥推荐的书欢迎留言~),发现书中对NIO采用的Reactor模式、AIO采用的Proactor模式一笔带过,好奇心趋势我找了一下文章,发现两篇挺不错的文章,和,接下来是对这两个模式粗略的理解。


  在《》这篇文章中,Reactor模式的读过程是这么被描述的:

  简单画出的图是这样子的,我们可以看到,事件分离器和事件处理器是在等待有事件的到来,同时,一个事件分离器可以将n个事件分配到m个事件处理器上。

 

  用《》这篇文章中举出的例子,就是服务员收N个桌子的菜单,然后根据菜单将菜名报给炒不同菜系的师傅。

  在《》这篇文章中,Proactor模式的读过程是这么被描述的:

1. 应用程序初始化一个异步读取操作,然后注册相应的事件处理器,此时事件处理器不关注读取就绪事件,而是关注读取完成事件。

2. 事件分离器等待读取操作完成事件

3. 在事件分离器等待读取操作完成的时候,操作系统调用内核线程完成读取操作,并将读取的内容放入用户传递过来的缓存区中。

4. 事件分离器捕获到读取完成事件后,激活应用程序注册的事件处理器,事件处理器直接从缓存区读取数据,而不需要进行实际的读取操作。

  从上述可以看出,Proactor模式有两个特点:① 不关注就绪事件,而是关注完成事件;② 将读取到的内容放入缓存区,所以事件处理器可以直接从缓存区读取数据,而不需要再对这个事件进行读操作。

 

  这个通俗一点的比喻吧,就像是吃旋转寿司,师傅把寿司做好了放到传送带上(传送带就相当于一个缓冲区),用户自己拿想吃的寿司。

  小记一篇,写着乐呵,这么打比方方便你我他,如果有中心思想的偏差也请大家提点一下啦~

转载于:https://www.cnblogs.com/NYfor2018/p/11055311.html

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baomayou.com 版权所有 赣ICP备2024042794号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务