skynet 的理解

skynet 构建了一个单进程多线程的任务处理框架,处理网络时是单线程,然后将消息投递到多线程(线程池)任务对列,每一个任务是一个沙盒。跟 libuv 的概念差不多。不过 libuv 的任务不是在沙盒里运行,不过用lua 包装的 luv, 任务可以在沙盒里运行。 skynet 的配置文件定义了 lua 模块加载路径,然后并不需要在文件中 require 模块来使用, 新的模块在 skynet 中称 …

skynet lua 服务

C 模块的导出 从 skynet 核心模块来看,它只认得 C 服务,每个服务被编译为动态库,在需要时由 skynet 加载。skynet 提供发送消息和注册回调函数的接口,并保证消息的正确到达,并调用目标服务回调函数。其它东西,如消息调度,线程池等,对于用户来说都是透明的。 skynet 服务可以由 lua 编写,因此 skynet 将 C 模块核心接口通过 skynet/lualib-src/l …

skynet socketserver

1. 异步 IO skynet 用 C 编写的 sokcet 模块使用异步回调机制,通过 lualib-src/lua-socket.c 导出为 socketdriver 模块。skynet socket C API 使用的异步回调方式是:在启动 socket 时,记录当前服务 handle,之后该 socket 上面的消息 (底层使用 epoll 机制) 通过 skynet 消息的方式发往该服务 …

skynet gateserver

skynet 提供一个 gateserver 用于处理网络事件,位于 lualib/snax/gateserver.lua。云风在 skynet wiki 上介绍了 gateserver 的功能和使用范例。用户可以通过向 gateserver 提供一个自定义 handle 来向 gateserver 注册事件处理 (玩家登录,断开,数据到达等)。 gateserver 模块使用 C 编写的 soc …