skynet 一个agent多个玩家的优缺点
一个agent多个玩家的优缺点
优点:
1 省内存
缺点:
1 破坏了actor模式,破坏了lua天生的沙盒模式。
2 因为一般一个skynet会启动n个agent的service,那么就需要额外维护负载均衡,并且这个负载均衡是内嵌到框架里的。
3 skynet的worker线程,首先会先判断上一次执行的次级消息队列,如果上一次的消息队列里还有剩余消息,那么会继续执行该消息队列的消息,那么如果一个玩家多个agent,大概率会出现这个消息队列一直有消息的情况,那么有可能会出现此worker线程在一段时间内只处理该消息队列的消息,那么对其他service,例如公会服务的消息有失公平。
4 每次有消息的时候,agent必须先判断此次uid的值,所以每次消息过来都必须要显示带入一些区分user的参数。
5 因为破坏了lua天生的沙盒环境,那么当用lua的闭包时要小心翼翼(增加了代码负担)。
6 gc问题,容易产生大table,vm数据量大,一个完整gc扫描的数据量大,经历时间更长,垃圾内存更慢才被释放,gc原子阶段的卡顿时间越长。
7 当使用定时任务时,必须要显示关闭,不然会出现大量未关闭的协程。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库