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