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

2023-11-11 00:28

本文主要是介绍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)

运行结果

在这里插入图片描述

04、相关代码

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

这篇关于skynet学习笔记02— skynet介绍、skynet基础API与环境变量的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/386301

相关文章

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方

HTML img标签和超链接标签详细介绍

《HTMLimg标签和超链接标签详细介绍》:本文主要介绍了HTML中img标签的使用,包括src属性(指定图片路径)、相对/绝对路径区别、alt替代文本、title提示、宽高控制及边框设置等,详细内容请阅读本文,希望能对你有所帮助... 目录img 标签src 属性alt 属性title 属性width/h

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3

MybatisPlus service接口功能介绍

《MybatisPlusservice接口功能介绍》:本文主要介绍MybatisPlusservice接口功能介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录Service接口基本用法进阶用法总结:Lambda方法Service接口基本用法MyBATisP

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

详解Linux中常见环境变量的特点与设置

《详解Linux中常见环境变量的特点与设置》环境变量是操作系统和用户设置的一些动态键值对,为运行的程序提供配置信息,理解环境变量对于系统管理、软件开发都很重要,下面小编就为大家详细介绍一下吧... 目录前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变

MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)

《MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)》掌握多表联查(INNERJOIN,LEFTJOIN,RIGHTJOIN,FULLJOIN)和子查询(标量、列、行、表子查询、相关/非相关、... 目录第一部分:多表联查 (JOIN Operations)1. 连接的类型 (JOIN Types)

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas