【skynet】skynet 入門代碼

寫在前面

本文將從零開始,寫第一個 skynet 程序 HelloWorld 。通過 HelloWorld 可以熟悉 skynet 的運作方式,和了解其 api 。

文章目錄

  • 寫在前面
  • 準備工作
  • 編寫代碼
  • 運行結果


準備工作

首先要有一個編譯好,而且工作正常的 skynet 。

編寫代碼

在 skynet/example 目錄編寫一個配置文件,一個代碼文件。

代碼文件

-- main_ping.lua-- require skynet
local skynet = require "skynet"-- 初始化函數
function init()skynet.error("This is main_ping service.")
end-- 服務函數
function task()while true do-- 打印時間戳skynet.error("time: " .. math.floor(skynet.time()))-- 睡眠一秒skynet.sleep(100) end
end-- 注冊初始化函數
skynet.init(init)-- 啟動服務
skynet.start(task)

為了讓 bootstrap 加載 main_ping 還需要一個配置文件。

-- config_ping-- 啟動多少個工作線程
thread = 8-- skynet 工作在單節點模式下
harbor = 0-- skynet 節點的主程序
start = "main_ping"-- lua 服務代碼所在的位置
luaservice = "./service/?.lua;./examples/?.lua"

運行結果

root@macbook:~/skynet# ./skynet examples/config_ping
[:00000001] LAUNCH logger 
[:00000002] LAUNCH snlua bootstrap
[:00000003] LAUNCH snlua launcher
[:00000004] LAUNCH snlua cdummy
[:00000005] LAUNCH harbor 0 4
[:00000006] LAUNCH snlua datacenterd
[:00000007] LAUNCH snlua service_mgr
[:00000008] LAUNCH snlua main_ping
[:00000008] This is main_ping service.
[:00000008] time: 1692068312
[:00000008] time: 1692068313
...

可以看到,一共是開了8個服務。

  1. logger
  2. snlua bootstrap
  3. snlua launcher
  4. snlua cdummy
  5. harbor
  6. snlua datacenterd
  7. snlua service_mgr
  8. snlua main_ping

其中第8個服務 snlua main_ping 才是我們自己編寫的,其他都是系統服務。

嚴格來說,是 bootstrap 通知 launcher 啟動一個 snlua ,由 snlua 執行我們的服務。

服務啟動時,先調用了init()初始化函數,然后執行task()進入工作,周期打印時間戳。

skynet|+ logger|+ snlua bootstrap|+ snlua launcher|+ snlua cdummy|   ||   + harbor|+ snlua datacenterd|+ snlua service_mgr|+ snlua main_ping

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/37809.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/37809.shtml
英文地址,請注明出處:http://en.pswp.cn/news/37809.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Linux】Shell腳本之流程控制語句 if判斷、for循環、while循環、case循環判斷 + 實戰詳解[?建議收藏!!?]

👨?🎓博主簡介 🏅云計算領域優質創作者 ??🏅華為云開發者社區專家博主 ??🏅阿里云開發者社區專家博主 💊交流社區:運維交流社區 歡迎大家的加入! 🐋 希望大家多多支…

.bit域名調研

.bit域名研究 問題: .bit域名和ENS域名的相同點?不同點?有什么關系? .bit的定義 .bit 是基于區塊鏈的,開源的,跨鏈去中心化賬戶系統.bit 提供了以 .bit 為后綴的全局唯一的命名體系,可用于加密…

安全第二次

一&#xff0c;iframe <iframe>標簽用于在網頁里面嵌入其他網頁。 1&#xff0c;sandbox屬性 如果嵌入的網頁是其他網站的頁面&#xff0c;因不了解對方會執行什么操作&#xff0c;因此就存在安全風險。為了限制<iframe>的風險&#xff0c;HTML 提供了sandb…

分布式應用:Zabbix監控MariaDB

目錄 一、理論 1.Zabbix監控MariaDB 二、實驗 1.Zabbix監控MariaDB 一、理論 1.Zabbix監控MariaDB &#xff08;1&#xff09;環境 zabbix服務端&#xff1a;192.168.204.214 zabbix客戶端&#xff1a;192.168.204.215 &#xff08;2&#xff09;MareaDB安裝 安裝 za…

做海外游戲推廣有哪些條件?

做海外游戲推廣需要充分準備和一系列條件的支持。以下是一些關鍵條件&#xff1a; 市場調研和策略制定&#xff1a;了解目標市場的文化、玩家偏好、競爭格局等是必要的。根據調研結果制定適合的推廣策略。 本地化&#xff1a;將游戲內容、界面、語言、貨幣等進行本地化&#…

使用ip2region獲取客戶端地區

目錄 從gitee拉取ip2region.xdb資源文件 寫測試類 注意要寫對資源路徑 本地測試結果 ?編輯 遠端測試結果 從gitee拉取ip2region.xdb資源文件 git clone https://gitee.com/lionsoul/ip2region.git 將xdb放入resources資源文件夾 引入依賴 <dependency><groupId&…

由淺入深C系列五:使用libcurl進行基于http get/post模式的C語言交互應用開發

使用libcurl進行基于http get/post模式的C語言交互應用開發 簡介環境準備在線資源示例代碼測試調用運行結果 簡介 大多數在linux下的開發者&#xff0c;都會用到curl這個命令行工具。對于進行restful api的測試等&#xff0c;非常方便。其實&#xff0c;這個工具還提供了一個C…

Python中單引號、雙引號和三引號的區別

① 單引號和雙引號主要用來表示字符串 # 單引號 astr = Python print(type(astr)) # <class str># 雙引號"" bstr = "Python" print(type(bstr)) # <class str> str1 = I\m a big fan of Python. print(str1) # Im a big fan of Python.s…

[HDLBits] Exams/m2014 q4d

Implement the following circuit: module top_module (input clk,input in, output out);always(posedge clk) beginout<out^in;end endmodule直接寫out^in就行

Vue 使用 vite 創建項目

vite 是新一代前端構建工具&#xff0c;和 webpack 類似。 vite 的啟動速度更快。在開發環境中&#xff0c;不需要打包就可以直接運行。 vite 的更新速度更快。當修改內容后&#xff0c;不需要刷新瀏覽器&#xff0c;頁面就會實時更新。 vite 完全是按需編譯。它只會編譯需要…

【考研數學】高等數學第三模塊——積分學 | Part II 定積分(反常積分及定積分應用)

文章目錄 前言三、廣義積分3.1 斂散性概念&#xff08;一&#xff09;積分區間為無限的廣義積分&#xff08;二&#xff09;積分區間有限但存在無窮間斷點 3.2 斂散性判別法 四、定積分應用寫在最后 前言 承接前文&#xff0c;梳理完定積分的定義及性質后&#xff0c;我們進入…

企業網盤 vs 傳統存儲設備:為何云存儲成為首選?

企業網盤的出現為企業提供了新的存儲方式&#xff0c;相較于傳統的存儲設備&#xff0c;為何越來越多的企業選擇了云存儲呢&#xff1f; 一、存儲成本 在企業數據存儲方面&#xff0c;成本是企業重要的考量因素。企業網盤是基于云存儲技術的存儲工具&#xff0c;因此它比傳統的…

基于DBN的偽測量配電網狀態估計,DBN的詳細原理

目錄 背影 DBN神經網絡的原理 DBN神經網絡的定義 受限玻爾茲曼機(RBM) DBN的偽測量配電網狀態估計 基本結構 主要參數 數據 MATALB代碼 結果圖 展望 背影 DBN是一種深度學習神經網絡,擁有提取特征,非監督學習的能力,是一種非常好的分類算法,本文將DBN算法偽測量配電網…

Netty:ByteBuf的資源釋放方法

說明 io.netty.buffer.ByteBuf實現了io.netty.util.ReferenceCounted接口&#xff0c;需要顯式釋放。當ByteBuf被實例化后&#xff0c;它的引用計數是1。 調用ByteBuf對象的release方法釋放&#xff1a; ByteBuf的release()方法使引用計數減少1。只有當執行以后引用計數減少…

OpenZFS 2.2 發布 RC3,支持 Linux 6.4

導讀之前的 OpenZFS 2.2 候選版本已致力于實現與 Linux 6.4 內核的兼容性&#xff0c;而在 2.2-rc3 中&#xff0c;Linux 6.4 支持的元跟蹤器已標記為已完成。 OpenZFS 2.2 發布了第 3 個 RC 版本。 之前的 OpenZFS 2.2 候選版本已致力于實現與 Linux 6.4 內核的兼容性&#x…

Vue3 引用第三方Swiper內容觸摸滑動簡單應用

去官網查看更多教程→&#xff1a;Swiper官網 → 點擊教程在vue中使用Swiper→ 在Vue中使用Swiper cd 到項目 安裝Swiper&#xff1a; cnpm install --save swiper 安裝指定版本 cnpm install --save swiper8.1.6 9.4.1 10.1.0…

SpringBoot-Hello World

SpringBootWeb快速入門 創建Springboot工程&#xff0c;并勾選web開發相關依賴定義HelloController類&#xff0c;添加方法hello&#xff0c;并添加相關注釋運行測試 創建新的SpringBoot項目 幾個注意的點&#xff1a; Name&#xff1a;基本上不用管&#xff0c;會根據下面的Ar…

關于elementui的input的autocomplete的使用

項目中需要實現搜索框搜索時能自動提示可選項的功能&#xff0c;elementui的input組件有已經封裝好的el-autocomplete可以使用&#xff0c;但是在使用中發現一些問題&#xff0c;記錄一下 基礎使用 // html部分 <el-autocompletev-model"name":fetch-suggestion…

大數據課程I3——Kafka的消息流與索引機制

文章作者郵箱:yugongshiye@sina.cn 地址:廣東惠州 ▲ 本章節目的 ? 掌握Kafka的消息流處理; ? 掌握Kafka的索引機制; ? 掌握Kafka的消息系統語義; 一、Kafka消息流處理 1. Producer 寫入消息 流程說明: 1. producer 要向Kafka生產消息,需要先通過…

EditPlus連接Linux系統遠程操作文件

EditPlus是一套功能強大的文本編輯器&#xff01; 1.File ->FTP->FTP Settings&#xff1b; 2.Add->Description->FTP server->Username->Password->Subdirectory->Advanced Options 注意&#xff1a;這里的Subdirectory設置的是以后上傳文件的默認…