
skynet
文章平均质量分 51
Andrew_37
对自己学过的知识,进行整理总结。
展开
-
如何启动一个lua服务
最近在看公司项目的代码,发现了一个问题。skynet.newservice(“xxx”); 写的是xxx, 是一个目录的名字,而目录名下面有一个main.lua。 启动的正是这个main的脚本。因为在之前skynet api的学习中, skynet.newservice,传入的的参数都是要启动的服务的脚本名字的。那为啥项目里传入的参数是目录名了。带着这个问题,有必要深入地去看一下skynet 是如何启动一个lua服务的。每个skynet进程在启动时,都会启动一个lua层的launcher服务,该服务原创 2021-05-21 14:20:35 · 794 阅读 · 0 评论 -
skynet 服务调度
skynet.sleep(time)让当前任务等待time * 0.01sskynet.fork(func, …)启动一个新的任务去执行func, 相当于开了一个协程,函数调用完返回线程句柄。 每次调用skynet.fork ,都是从协程池中获取未被使用的协程,并把协程放入到fork队列中,等待一个消息的调度,然后会把fork队列中的协程拿出来执行一遍,执行结束后,会把协程重新丢入到协程池中,这样避免重复开启关闭协程的额外开销。skynet.fork 创建的协程是通过lua协程来实现的, 当一个协原创 2021-04-21 23:18:21 · 416 阅读 · 0 评论 -
遇到的问题,更新了skynet版本后, 运行包含protocol协议的lua文件时报错
报错内容:如上图所示,error loading module ‘protobuf.c’ from file ‘./luaclib/protobuf.so’原因:新版的skynet支持了lua5.4.2, lua版本不一致造成的解决方法:https://www.lua.org/ftp/到这个网站下载lua5.4.2的安装包重新装上lua5.4.2tar zxf lua-5.4.2.tar.gzcd lua-5.4.2make linux testmake installlua查看.原创 2021-04-21 17:21:50 · 1014 阅读 · 0 评论 -
skynet服务别名 api
运行skynet服务器在skynet目录下./skynet example/config 运行的是config文本中 start字段的lua脚本环境变量 指的就是 这个config文本可以通过skynet.getenv(varName) 来获取环境变量skynet.setenv(varName, varValue) 慎用,因为会修改文本的内容skynet.init 是在 skynet.start执行之前执行skynet.start 服务初始化,参数是一个函数服务类型创建一个服务实例,原创 2021-04-21 15:23:39 · 333 阅读 · 0 评论