![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
skynet
从零到一万物起源
热爱编程,热爱学习,热爱记录,热爱分享
展开
-
skynet学习笔记 sharetable共享表
sharetable skynet原创 2022-12-30 21:30:22 · 1791 阅读 · 0 评论 -
skynet使用时遇到的坑 -2 skynet别名别滥用
skynet别名源码分析:skynet学习笔记 源码之sknyet_handle句柄_从零到一万物起源的博客-CSDN博客别名简介skynet原创 2021-10-30 09:30:25 · 272 阅读 · 0 评论 -
skynet使用时遇到的坑 -1:消息堆积引爆内存风险
场景客户端 服务器 数据库客户端请求skynet服务器,skynet服务器查询数据库发送结果给客户端。假设客户端1秒可以有10条请求被服务器接收处理,数据库处理速度为1秒1条。假设客户端一直以最快速度请求。这样skynet就会堆积消息。lua服务就会堆积携程。因为消息和lua携程都是要占用内存的,得不到释放就会有引爆内存的风险。...原创 2021-10-20 16:06:55 · 660 阅读 · 0 评论 -
skynet学习笔记 源码之lua消息回调注册过程
所有lua服务通过c模块snlua拉起的,skynet启动都拉起config中的bootstrap = "snlua bootstrap" --the service for bootstrap也就是通过snlua拉起bootstrap文件名的lua服务。static voidbootstrap(struct skynet_context * logger, const char * cmdline) { int sz = strlen(cmdline); cha...原创 2021-06-23 16:51:24 · 499 阅读 · 0 评论 -
skynet学习笔记 源码之skynet_server服务api
前言skynet_server是skynetc层的核心。代码主要实现skynet.c和skynet_server.h的api函数。原创 2021-06-16 21:24:03 · 379 阅读 · 0 评论 -
skynet学习笔记 源码之sknyet_env环境变量
前言env在skynet的作用是服务间共享的环境变量。api接口const char * skynet_getenv(const char *key);void skynet_setenv(const char *key, const char *value);原创 2021-06-04 16:05:20 · 295 阅读 · 0 评论 -
skynet学习笔记 源码之sknyet_handle句柄
前言handle句柄,每一个context出生都会注册的id,skynet_handle集中管理它们的引用计数,内存释放,还有本地别名。原创 2021-06-01 21:38:32 · 205 阅读 · 0 评论 -
skynet学习笔记 源码之sknyet_mq消息队列
前言消息队列是skynet非常核心的一部分,每个actor都会携带一个次级消息队列,原创 2021-05-28 11:19:59 · 175 阅读 · 0 评论 -
skynet学习笔记 源码之sknyet_monitor监视器
前言sknyet_monitor的作用是监视work线程对消息的处理有没有疑似出现死循环。当出现这种情况时,会把目标context endless字段置为true,lua层通过skynet.lenless()判断当前处理是否出现死循环。monitor结构structskynet_monitor{ATOM_INTversion; //原子累加的版本号intcheck_version; //检查版本号uint32_tsource; /...原创 2021-05-17 20:30:49 · 301 阅读 · 0 评论 -
skynet学习笔记 源码之sknyet_module模块
前言skynet_module在skynet中非常重要,skynet_context必须有一个module实例。sknyet_module的作用主要是加载保存动态库,绑定动态库API接口,module代理调用动态库的api接口。作用:避免的动态库重复加载,接口调用简单化。skynet_module.hmodule结构体非常的简单,就是记录这个库文件名字,句柄,和一个api接口函数。structskynet_context;typedefvoid*(*skynet_...原创 2021-05-05 18:56:50 · 131 阅读 · 0 评论 -
skynet学习笔记 源码之skynet_timer定时器
定时器简介skynet.timeout(ti,func)skynet定时器非常的轻量级,仅仅提供注册函数,并且还不能传参。定时器的实现仅仅用了300行代码。定时器注册回调流程通过调用capi把定时任务加入,最终已消息的方式传回本actor,用worker线程处理消息,执行注册函数。functionskynet.timeout(ti,func)localsession=c.intcommand("TIMEOUT",ti) ....endstat...原创 2021-04-30 13:03:06 · 1395 阅读 · 0 评论