找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 4932|回复: 2

讨论half sync-async与LF的区别及各自合适的应用场景

[复制链接]
发表于 2011-5-10 11:28:08 | 显示全部楼层 |阅读模式
性能 : LF 略> half
half容易处理爆发的客户(书上如是说,不解,包多了,用尽了池中的所有线程还不是得候在那)
请各位多指教。。。
 楼主| 发表于 2011-5-13 10:01:19 | 显示全部楼层
自己顶下。。。
场景一: 服务器A 对应少量代理服务器连接,每个proxyserver负责大量client连接,此时可以认为该连接是“爆发的客户”,因为proxy转发几k数量的玩家数据包。
场景二:服务器B直接连接多个客户端,客户端连接可以认为是”非爆发的客户“。
前提:A、B都有使用多线程的理由,即处理过程中会是长处理,如数据库、磁盘操作等。
第一类合适使用hsha模式,即同一句柄的多个IO事件可并发处理,因为排队层更容易完成了生产消费的解耦,设计上处理消息的类与io处理Event_Handle最好解耦,即各干各的,有消息回复的话直接扔回排队层。
第二类更合适于LF模式,TP_Select序列化多个IO事件到达同一句柄,不同句柄是可以并发处理的
当然,以上讨论都是基于ACE中TP_Select提供的功能进行描述的,我不知道SPServer中LF实现时是否有做
同一句柄多个IO事件序列化处理,如果有知道的朋友,请不吝指教。
 楼主| 发表于 2011-5-13 10:04:36 | 显示全部楼层
漏了一句,第二类,同一句柄多个IO事件是不可并发的,除了超时处理
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-12-22 17:18 , Processed in 0.018511 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表