skynet框架分析
文章平均质量分 74
lpl312905509
这个作者很懒,什么都没留下…
展开
-
skynet 配置中lua服务创建流程
上述代码可知,向 launcher服务发送一个消息,消息类型为 PTYPE_LUA,然后会被 launcher服务接收到,然后调用到 launcher.lua 中的 command.LAUNCH 接口,然后以同时的 skynet.launch(service, param)接口 创建 main.lua服务。由上述可知,创建了一个 actor,同样依靠 loader.lua脚本,参数为 launcher,调用 launcher.lua脚本。此时可以知道,会调用到 bootstrap.lua中。原创 2024-01-02 17:33:08 · 1219 阅读 · 0 评论 -
skynet 创建lua服务流程
本文将介绍 skynet 怎么去创建一个lua 服务服务 ,以一个简单的test服务为例首先会调用 skynet.newservice(“test”)接口文件: skynet.luaname:testarg:…function skynet.newservice(name, ...) return skynet.call(".launcher", "lua" , "LAUNCH", "snlua", name, ...)end此接口将会给 launcher 服务发送一个lua消息 命令是原创 2020-05-16 00:30:35 · 511 阅读 · 0 评论 -
skynet skynet.send()、skynet.call()、skynet.ret()分析
skynet.send(addr,type,...) //addr 可以是服务句柄也可以是别名 type消息类型 ... 参数 非阻塞 不需要应答skynet.call(addr,type,...) //阻塞 需要应答skynet.ret(msg,sz) //回应消息首先上示例代码receivemsg.lua --接收消息端local skynet = require("...原创 2020-04-23 00:01:33 · 4149 阅读 · 0 评论 -
skynet skynet.error()的一个小坑
今天调试代码的时候,遇到了一个小坑,打印的输出信息一致不对,困扰了一天各种想不明白,后来还是通过另一个方式算是解决了这个问题,也算是skynet.errro()的一个小坑吧。对于我这种新手skynet学习者来说。下面直接上代码首先我测试的是 skynet.pack()、skynet.unpack、skynet.trash()这三个函数。我在C层分别加了打印。测试调用情况,以及内存释放问题分别加...原创 2020-04-20 23:17:39 · 897 阅读 · 0 评论 -
skynet skynet.send() 发送不需要应答的消息
话不多说,上测试代码--receivemsg.lua 接收消息端local skynet = require("skynet")require("skynet.manager")function dosomething(session,address,...) skynet.error("recv from:",skynet.address(address),"session:",...原创 2020-04-19 22:52:54 · 4249 阅读 · 0 评论 -
skynet源码 skynet.pack、skynet.unpack分析
skynet.pack与skynet.unpack实现分析skynet.lua358行 可以看到如下定义skynet.pack = assert(c.pack)skynet.packstring = assert(c.packstring)skynet.unpack = assert(c.unpack)skynet.tostring = assert(c.tostring)skyne...原创 2020-04-15 22:38:52 · 1552 阅读 · 0 评论 -
skynet skynet.wait()以及skynet.wakeup()分析
话不多说 先上测试代码local skynet = require("skynet")function task1( ) skynet.error("start wait") --1 因为1先fork skynet.wait() --挂起 skynet.error("end wait") --4endfunction task2( co ) skynet.error("s...原创 2020-04-19 09:57:24 · 1207 阅读 · 0 评论 -
skynet skynet.fork()以及skynet.sleep()的工作流程
话不多说,先贴出测试代码local skynet = require("skynet")function task( ) skynet.error("start sleep:",coroutine.running()) --被唤醒 然后sleep 5s skynet.sleep(500) skynet.error("end sleep:",coroutine.running())e...原创 2020-04-19 01:44:40 · 1062 阅读 · 0 评论 -
skynet skynet.start函数分析
注意:该文章暂且只分析skynet框架的lua层,底层待后续分析首先知道 启动一个服务 必须调用 skynet.start函数 且服务间的调度必须通过消息的形式才能驱动现在的代码都可在skynet.lua 中可以找到//源码如下function skynet.start(start_func) c.callback(skynet.dispatch_message) skynet.ti...原创 2020-04-18 23:55:11 · 976 阅读 · 0 评论