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

 时间:2024-11-03 04:22:35

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

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

工具/原料

软件版本:vs2018

操作系统:windows10home

操作电脑:台式机

理解反应堆模式

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
热门搜索
水鱼图片 紫薇树图片 四维空间图片 快看漫画下载漫画 蔬菜拼盘图片