服务的启动流程
C模块
通过skynet_context_new()进行启动
1.在moudles列表中查找是否已经加载过,如果已经加载过就取出,如果没有则加载到moudles列表
2.生成模块的实例,即调用模块的create()
3.创建一个上下文(skynet_context 结构), 并给其部分成员进行赋值
4.生成一个上下文的句柄
5.创建一个该服务的消息队列
6.调用模块的init()
lua服务
每个lua服务可以看成是snlua模块的实例
在skynet启动的时候,会启动一个lua层的launch服务,该服务主要负责skynet运行期间lua服务的创建。
1.从skynet.newservice()开始
2.可以看到skynet.newservice()其实调用的是launch服务的LAUNCH函数