设计模式:反应堆模式(reactor)

 时间:2024-10-21 02:30:58

反应器模式,是一种高效的异步IO模式,特征是回调,当IO完成时,回调对应的函数进行处理。容易和观察者模式混淆。

设计模式:反应堆模式(reactor)

工具/原料

软件版本:vs 2018

操作系统:windows 10 home

操作电脑:台式机

理解反应堆模式

1、什么是反应堆模式:反应堆是一种事件处理的设计模式。异步的收取消息。将不同的消息绑定到不同的回调函数上。

设计模式:反应堆模式(reactor)

2、反应堆模式应用场景:反应堆模式是为了应对高并发的服务器端开发。redis、netty、ZeroMQ和一些游戏服务器都采用了反应堆模式。

设计模式:反应堆模式(reactor)

3、反应堆模式的优缺点:缺点: Reactor模式增加了一定的复杂性。 Reactor模式需要底层的同步事件多路分配器的支持。 Reactor模式在IO读写数据时还是在同一个线程中实现的。优点 1. 响应快,不必为单个同步时间所阻塞,虽然Reactor本身依然是同步的; 2. 编程相对简单,可以最大程度的避免复杂的多线程及同步问题,并且避免 了多线程的切换开销; 3. 可扩展性,可以方便的通过增加Reactor实例个数来充分利用CPU资源; 4. 可复用性,reactor框架本身与具体事件处理逻辑无关,具有很高的复用 性;

设计模式:反应堆模式(reactor)

4、反应堆模式 内核收到数据会回调。匹配器匹配到不同连接上。数据可能还没有收完。

设计模式:反应堆模式(reactor)

5、如何优化反应堆模式:reactor模式的(socket)读写还是阻塞的。读写又很慢。proactor就没有这样的问题。这个时候可以用多线程去加速。反应堆放在主线程。工作线程放到另一个线程。或者是来个线程池。socket的时间会进入一个队列。线程池直接的线程会有锁的竞争。为了避免他们之间的竞争可以用开多个队列。根据玩家的id进行散列。这样即可以保证同一个玩家顺序的正确。有避免了线程资源的竞争

设计模式:反应堆模式(reactor)

6、利用协程或许是更好的解决方案。单线程运行调试比较容易。毕竟游戏的业务逻辑都比较复杂。而且可以使用线程不安全函数。开发的效率得到提高。

设计模式:反应堆模式(reactor)

7、提到reactor模式就不得不提proactor。Proactor模式是将所有IO事件操作都交由主线程和内核处理,工作线程只负责业务逻辑。可以很明显的发现Proactor相对于reactor更加高效。缺点就是更加复杂。Reactor:同时接收多个服务请求,并且依次同步的处理它们的事件驱动程序;Proactor:异步接收和同时处理多个服务请求的事件驱动程序;

设计模式:反应堆模式(reactor)
  • win10怎么查看文件扩展名关联
  • 怎么删除Windows Media Player
  • 如何将网页转换为本地APP?电脑打开手机APP
  • 53131A计频器操作手册:[17]
  • SQL Server2012 如何导出数据导Excel
  • 热门搜索
    说好普通话写好规范字手抄报 读书手抄报花边 国庆英语手抄报 我爱读书手抄报的内容 科技知识手抄报 一二年级普通话手抄报 教师节手抄报内容文字 网络安全手抄报图片 国庆手抄报简单 手抄报装饰小图案