skynet源码分析1:开篇明义
skynet是云风基于actor模型实现的一个服务器框架,核心七千多行c代码,并提供了一个lua binding。写得比较简明,用起来比较爽快,很合我的胃口,再加之决定在公司最近的一个项目上skynet,所以就决定精读一遍源码,将所思所想所得记录于此,以便用起来心安理得。
skynet的实现基于如下几条actor行为:
- 能创建,销毁其它actor,actor间为平级关系。
- 能发送消息给其它actor,能接收其它actor的消息。
- actor间的交互只能通过消息传递。
- 能处理自己的消息。
在skynet的世界里,actor用动态库来表示,每个so加载后,都会被赋予一个永不重复([1,4G])的id作为标识,so必须向框架注册一个回调函数用于处理消息。框架只做两件事:
- 将发送的消息正确送达目标actor。
- 均衡快速的调用so的回调处理消息,这个回调不会并发,且每次只处理一条消息。
未完待续,有不当之处,请各位道友指正。