Skynet 服务创建流程
Skynet 服务创建流程 根据设计综述 Skynet 是为了让服务器充分利用多核优势,将不同的业务放在独立的执行环境中处理。 Skynet 核心功能是加载一个 C 模块(动态库),模块用数字 id 标识,作为其 handle ,模块被称为服务 service 。服务间可以自由发送消息。每个模块可以向 Skynet 框架注册一个 callback 函数,用来接收发给它的消息。 每个服务是被一个个消息驱动,当无消息时,服务处于挂起状态。每个服务拥有一个属于自己的消息队列,框架中存在一个全局队列负责调度处理服务所接收到的消息。 代码层面,Skynet 服务对应于数据结构 struct skynet_context ,其中重要字段如下。 struct skynet_context { void * instance; // 模块自定义数据 struct skynet_module * mod; // 框架模块数据 void * cb_ud; // 传给回调函数的自定义数据 skynet_cb cb; // 回调函数 struct message_queue * queue; // 消息队列,用于接收发送给服务的消息 }; 函数 skynet_context_new 用于创建服务,返回值表示此服务。 // 参数 name: 服务名 // 参数 param: 传递给服务的参数 struct