skynet是雲風基於actor模型實現的一個服務器框架,核心七千多行c代碼,並提供了一個lua binding。寫得比較簡明,用起來比較爽快,很合我的胃口,再加之決定在公司最近的一個項目上skynet,所以就決定精讀一遍源碼,將所思所想所得記錄於此,以便用起來心安理得。
skynet的實現基於如下幾條actor行爲:
- 能創建,銷燬其它actor,actor間爲平級關係。
- 能發送消息給其它actor,能接收其它actor的消息。
- actor間的交互只能通過消息傳遞。
- 能處理自己的消息。
在skynet的世界裏,actor用動態庫來表示,每個so加載後,都會被賦予一個永不重複([1,4G])的id作爲標識,so必須向框架註冊一個回調函數用於處理消息。框架只做兩件事:
- 將發送的消息正確送達目標actor。
- 均衡快速的調用so的回調處理消息,這個回調不會併發,且每次只處理一條消息。
未完待續,有不當之處,請各位道友指正。