skynet 学习笔记 - 服务

本文详细介绍了Skynet框架中的服务概念,包括服务的结构、创建服务的流程,以及服务的消息回调机制。强调服务是C语言的结构体,通过`skynet_context_new`创建,每个服务需实现4个接口。还提到了日志服务`logger`,它是启动的第一个服务,负责记录其他服务的日志,并可通过`skynet.error`在Lua中输出日志。
摘要由CSDN通过智能技术生成

这篇文章,讲Skynet 调度机制中另外一个重点是:服务。

  • 服务的结构
  • 创建服务
  • 消息回调
  • 日志服务
  • 参考资料

服务

把一个符合规范的 C 模块,从动态库(so 文件)中加载进来。绑定一个永不重复的数字 id 做为其 handle 。

这个运行的模块就是服务。 服务本质上是C语言的一个结构体。

模块和服务的关系,可以理解为程序和进程。

struct skynet_context {
    void * instance;              // 指针,指向模块create的结构体
    struct skynet_module * mod;   // 对动态库 so 的封装
    void * cb_ud;                 // 消息回调的上下文
    skynet_cb cb;                 // 消息回调
    struct message_queue *queue;  // 服务所属的消息队列
    FILE * logfile;               // 如果存在,会通过 skynet_log_output 记录消息到这个文件中
    char result[32];              // 保存相关函数的临时结果
    uint32_t handle;              // 服务的 handle, 具有唯一性
    int session_id;               // 请求回应模式
    int ref;                      // 引用计数
    int message_count;            // 记录服务总共处理了多少个消息
    ...
};

创建服务

通过下面函数,可以创建一个服务。

struct
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值