skynet
文章平均质量分 51
28号技师
黄沙百战穿金甲,不破楼兰终不还
展开
-
skynet queue
由于skynet服务有重入问题,所以找到了一个skynet queue方法。简单用法,假设test为在服务中需要顺序执行的函数。只要把一个函数往queue扔就行了。local function test() print("hello world")endlocal queue = require "skynet.queue"queue(test)翻了一下源代码,实现是用一个闭包函数达到目的。整体思路就是记录下current thread,判断current thread是否和.原创 2021-03-18 00:47:58 · 622 阅读 · 0 评论 -
skynet 热更新
inject热更新inject命令相当于注入代码到服务中,原理就是让指定服务执行某个代码文件,通过修改模块及其函数的upvalue,完成对lua模块代码或变量的替换。实践过程中,发现一个注意点:_P 内存的 key/value 其实就是 skynet.lua 里 14 行 proto 中的 name 和 dispatch 的 upvalue。inject用法很简单,启动skynet,连接到其控制台:# nc 127.0.0.1 8000Welcome to skynet c...转载 2021-03-16 22:24:09 · 629 阅读 · 0 评论