skynet 学习笔记 - 服务

这篇文章,讲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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值