skynet剛開始是單進程多線程的,它是由一個一個的服務組成的。在skynet上做開發,實際上就是在寫服務。服務與服務之間通過消息隊列進行通信。 做為核心功能,Skynet 僅解決一個問題: 把一個符合規范的 C 模塊,從動態庫(so 文件)中啟動起來,綁定一個永不重復(即使模塊退出)的數字 ...
從四個方面來說: 消息發送 工作線程控制 信箱調度 消息分發 與調度相關的代碼實現在 skynet src skynet mq.c, skynet src skynet start.c, skynet src skynet server.c三個文件中,整體上是一個m:n的調度器。 消息發送 skynet的消息定義在 skynet src skynet mq.h中: source:消息源 sc 的句 ...
2016-09-13 17:52 0 1831 推薦指數:
skynet剛開始是單進程多線程的,它是由一個一個的服務組成的。在skynet上做開發,實際上就是在寫服務。服務與服務之間通過消息隊列進行通信。 做為核心功能,Skynet 僅解決一個問題: 把一個符合規范的 C 模塊,從動態庫(so 文件)中啟動起來,綁定一個永不重復(即使模塊退出)的數字 ...
之前已經說過skynet的是做什么的,現在開始從模塊上研究skynet的源碼。 skynet各層表現 從上大概就清楚skynet的“內部” 而skynet源碼目錄結構如下: 3rd:第三方代碼,有lua和jemalloc等。 lualib:使用lua寫的庫 ...
snax是一個方便實現skynet服務的簡單框架,對服務的接口(比如skynet.call, skynet.send等)做了進一步的封裝,編寫snax服務比較容易,詳情參考官方wiki https://github.com/cloudwu/skynet/wiki/Snax 下面是一個簡單 ...
注:為方便理解,本文貼出的代碼部分經過了縮減或展開,與實際skynet代碼可能會有所出入。 作為一個skynet actor,在啟動腳本被加載的過程中,總是要調用skynet.start和skynet.dispatch的,前者在skynet-os中做一些初始化工作,設置消息的Lua回調,后者 ...
skynet有兩種方法支持熱更新lua代碼:clearcache和inject,在介紹skynet熱更新機制之前,先介紹skynet控制台,參考官方wiki https://github.com/cloudwu/skynet/wiki/DebugConsole 1. skynet控制台 想要 ...
繼上一篇介紹了skynet的網絡部分之后,這一篇以網關gate.lua為例,簡單分析下其串接和處理流程。 在官方給出的范例中,是以examples/main.lua作為啟動腳本的,在此過程中會創建watchdog服務: 首先加載watchdog.lua腳本 ...
skynet自帶定時器功能skynet-src/skynet_timer.c,在skynet啟動時會創建一個線程專門跑定時器。每幀(0.0025秒/幀)調用skynet_updatetime() 1. 設計思想 skynet的設計思想參考Linux內核動態定時器的機制,參考 ...
上一篇文章介紹sproto的構建流程(http://www.cnblogs.com/RainRill/p/8986572.html),這一篇文章介紹sproto如何使用,參考https://githu ...