会员
周边
新闻
博问
闪存
众包
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
小乐虎
博客园
首页
新随笔
联系
订阅
管理
2022年2月
skynet里面有哪些高效的设计?有哪些影响性能的地方?
摘要: 最近拜读了 Linux高性能编程 这本书,结合skynet的使用与理解,总结下skynet为何能成为流行框架。 1 使用了IO多路复用 2 在事件处理模型采用了EPOLL模拟的Proactor模式,即对于socket的处理以及数据的读写都是在socket线程完成的,worker线程只做逻辑处理。 3
阅读全文
posted @ 2022-02-14 11:38 小乐虎
阅读(568)
评论(0)
推荐(0)
2022年1月
lua5.4 分代gc
摘要: lua gc的发展史: 5.0:双色标记法 非黑即白,只能原子进行,不然会出bug,缺点是会执行gc的时候进入 stop the world。 5.1:四色标记法 中间增加了灰色,白色分为两种颜色(当前白与非当前白),解决了必须原子操作的问题,在普通的扫描传播颜色中是步进式的,解决了整个gc中 st
阅读全文
posted @ 2022-01-27 17:55 小乐虎
阅读(1166)
评论(0)
推荐(1)
skynet 一个agent多个玩家的优缺点
摘要: 一个agent多个玩家的优缺点 优点: 1 省内存 缺点: 1 破坏了actor模式,破坏了lua天生的沙盒模式。 2 因为一般一个skynet会启动n个agent的service,那么就需要额外维护负载均衡,并且这个负载均衡是内嵌到框架里的。 3 skynet的worker线程,首先会先判断上一次
阅读全文
posted @ 2022-01-04 14:48 小乐虎
阅读(776)
评论(0)
推荐(0)
2021年12月
lua中全局变量的保存
摘要: lua如何保存c的全局变量以及static变量? lua使用registry保存c的全局变量以及static,为了防止被lua文件修改,该表只能在c中访问。 lua文件本身的全局变量如何保存,与c的全局变量不同,lua的全局变量保存在upvalue中的 _ENV表中的_G表,例如: 1 local
阅读全文
posted @ 2021-12-28 20:06 小乐虎
阅读(475)
评论(0)
推荐(0)
同一进程下的服务通讯和跨网络的通讯到底有什么不同
摘要: 同一进程下的服务通讯和跨网络的通讯到底有什么不同。 进程内的内存是共享的,skynet 是用 lua 沙盒来隔离服务状态,但是可以通过 C 库来绕过沙盒直接沟通。如果一个服务生产了大量数据,想传给您一个服务消费,在同一进程下,是不必经过序列化过程,而只需要通过消息传递内存地址指针即可。这个优化存在
阅读全文
posted @ 2021-12-07 20:05 小乐虎
阅读(110)
评论(0)
推荐(0)
2021年11月
skynet里epoll为什么用lt模式
摘要: 使用lt模式,首先是兼容poll,在文件描述符数量减少,且活跃度较高时,epoll不见得比poll更高效,必要时需要切回poll。 开发简单,可以延续poll与select的开发习惯,不会发生漏掉事件的bug。 不需要等待EAGAIN,可以节省系统调用次数,减少延迟。 总结,这样做不会丢失消息或数据
阅读全文
posted @ 2021-11-29 06:55 小乐虎
阅读(167)
评论(0)
推荐(0)
公告