從四個方面來說: 1、消息發送 2、工作線程控制 3、信箱調度 4、消息分發 與調度相關的代碼實現在/skynet-src/skynet_mq.c,/skynet-src/skynet_start.c,/skynet-src/skynet_server.c三個文件中,整體 ...
為了了解 skynet.call 的調用過程,需要先看看 skynet的隊列是如何把包分到不同工作線程的。看下圖 查看 global queue 的skynet globalmq push和skynet globamq pop,很容易可以找到兩個關鍵的函數: 和 先來看出口,skynet context message dispatch。在skynet的啟動函數中,我們已經知道skynet sta ...
2015-11-20 18:01 0 3377 推薦指數:
從四個方面來說: 1、消息發送 2、工作線程控制 3、信箱調度 4、消息分發 與調度相關的代碼實現在/skynet-src/skynet_mq.c,/skynet-src/skynet_start.c,/skynet-src/skynet_server.c三個文件中,整體 ...
繼上一篇介紹了skynet的網絡部分之后,這一篇以網關gate.lua為例,簡單分析下其串接和處理流程。 在官方給出的范例中,是以examples/main.lua作為啟動腳本的,在此過程中會創建watchdog服務: 首先加載watchdog.lua腳本 ...
雲風在skynet中繼承了sproto的傳輸協議,對比protobuf的好處是,能明文看到傳輸內容,而且skynet不需要protobuf這么功能,所以雲風也建議在lua層使用sproto來作為skynet的傳輸協議。 在examples文件夾中的agent.lua中有用到sproto ...
skynet是雲風團隊發布的一個開源的服務器框架。 底層采用C編寫,邏輯層通常用lua。非常適合作為游戲的服務器框架。 學習skynet,可能涉及到操作系統,window,linux,游戲服務器等方方面面的知識,是一個不可多得的開源項目。 作為菜鳥的希望把學習的過程記錄下來,無論對於面試 ...
閱讀雲大的博客以及網上關於 skynet 的文章,總是會談服務與消息。不怎么看得懂代碼,光讀這些文字真的很空洞,不明白說啥。網絡的力量是偉大的,相信總能找到一些解決自己疑惑的文章。然后找到了這篇講解 skynet 消息隊列的文章(最新的 skynet 消息隊列代碼已經有更新,變得更簡潔易讀)。了解 ...
注:為方便理解,本文貼出的代碼部分經過了縮減或展開,與實際skynet代碼可能會有所出入。 作為一個skynet actor,在啟動腳本被加載的過程中,總是要調用skynet.start和skynet.dispatch的,前者在skynet-os中做一些初始化工作,設置消息的Lua回調,后者 ...
要想認識一個框架,首先要做的就是讓它跑起來。 skynet是一款基於C跟lua的開源服務端並發框架,這個框架是單進程多線程模型,主要應用於游戲服務端領域,是lua大神雲風所寫的。本文不涉及框架過多的理論知識,只是簡單的介紹一下如何編譯以及運行skynet。 skynet開源項目 ...
前言 skynet是我們游戲服務端的底層框架,當初在技術選型的時候仔細閱讀過它的源碼,發現它是一個C語言的工程典范。大多數游戲服務端,要么使用C++,要么使用java,使用C是非常少見的。但是skynet通過C和Lua的結合,實現了一個高效的游戲框架,C層沒有多余的一堆三方庫 ...