skynet学习笔记02— skynet介绍、skynet基础API与环境变量

01、Skynet与Actor模型

在系统Skynet之前,先了解一下Skynet与Actor模型,下列是风云大佬的介绍以及一个大佬的博客

  • https://github.com/cloudwu/skynet/wiki/GettingStarted
  • https://blog.csdn.net/qq769651718/article/details/79432793

02、Skynet基础API

  • start(func): 用 func函数初始化服务,并将消息处理函数注册到 C 层,让该服务可以工作。
  • init(func):若服务尚未初始化完成,则注册一个函数等服务初始化阶段再执行;若服务已经初始化完成,则立刻运行该函数。
  • setenv(key,value): 向当前进程内注册表添加一项(不可以重置已有配置项)。
  • skynet.getenv(key) :conf配置信息已经写入到注册表中,通过该函数获取注册表的变量值
  • skynet.exit(): 结束当前服务
  • skynet.error(str):打印函数

全部API列表:https://github.com/cloudwu/skynet/wiki/APIList

03、Demo

配置

project = "../project/"

thread = 8
cpath = "./cservice/?.so"
bootstrap = "snlua bootstrap"
start = "01baskAPI"
-- 可以是 1-255 间的任意整数。一个 skynet 网络最多支持 255 个节点。每个节点有必须有一个唯一的编号。
-- 如果 harbor 为 0 ,skynet 工作在单节点模式下。此时 master 和 address 以及 standalone 都不必设置。
harbor = 0 
lualoader = "./lualib/loader.lua"
luaservice = "./service/?.lua;"..project.."?.lua;"
lua_path =  "./lualib/?.lua;" .. "./lualib/?/init.lua;"
lua_cpath = "./luaclib/?.so"

-- 自定义的变量
myname = "mhzzj"
myage = 9999

代码

local skynet = require "skynet"

skynet.init(function ()
    local name = skynet.getenv("myname")    
    local age = skynet.getenv("myage")   
    skynet.error("01baskAPI [init] name",name,"age",age,"newKey",skynet.getenv("newKey")) 
    skynet.setenv("newKey","newValue");
    skynet.error("01baskAPI [init] name",name,"age",age,"newKey",skynet.getenv("newKey")) 
    -- skynet.setenv("newKey","newValue2"); 对已经存在的key赋值会导致报错
    -- skynet.setenv("myname","myname");
end)


skynet.start(function()
    local name = skynet.getenv("myname")    
    local age = skynet.getenv("myage")  
	skynet.error("01baskAPI [start main] name ",name,"age",age,"newKey",skynet.getenv("newKey"))
	skynet.exit()
end)

运行结果

skynet学习笔记02— skynet介绍、skynet基础API与环境变量_第1张图片

04、相关代码

https://gitee.com/mhz-zzj/skynet-study
在这里插入图片描述

你可能感兴趣的:(skynet,学习,笔记,服务器,lua)