skynet的流程2】的更多相关文章

 3.基本原理 3.1启动流程  1.skynet-src/skynet_main.c 这个是main()函数所在,主要就是设置一下lua的环境.默认的配置.打开config配置文件,并修改默认配置.最后调用skynet_start()函数,这个函数在skynet_start.c文件中. 2.skynet-src/skynet_start.c这个文件主要是初始化Skynet的各个模块,包括harbor节点.handle服务ID.mq消息队列.module加载动态链接库.timer时钟.socke…
logpath = "."harbor = 1address = "127.0.0.1:2526"master = "127.0.0.1:2013"start = "main" -- main scriptbootstrap = "snlua bootstrap" -- The service for bootstrapstandalone = "0.0.0.0:2013"luaserv…
http://blog.csdn.net/xiarendeniao/article/details/38613161 http://www.jiandan.ren/2015/06/skynet-hello-socket/ 这篇分析的很不错 哪来收藏了…
转:  http://forthxu.com/blog/skynet.html skynet是云风编写的服务端底层管理框架,底层由C编写,配套lua作为脚本使用,可换python等其他脚本语言.skynet主要工作是管理注册服务,并开启多线程协调服务之间的调用和通讯. skynet一般用于开发游戏服务端程序. 注意:资料开始往github组织账号skynetclub上转移,本页面不在进行更新主要收集学习skynet有关的任何内容,如果你有好的资料或者你在研究skynet,可以将资料或链接地址发给…
这遍摘自skynet 的wiki skynet 由一个或多个进程构成,每个进程被称为一个 skynet 节点.本文描述了 skynet 节点的启动流程. skynet 节点通过运行 skynet 主程序启动,必须在启动命令行传入一个 Config 文件名作为启动参数.skynet 会读取这个 config 文件获得启动需要的参数. 第一个启动的服务是 logger ,它负责记录之后的服务中的 log 输出.logger 是一个简单的 C 服务,skynet_error 这个 C API 会把字符…
基于云风的 blog,收集 skynet 的特性以便将来在代码中一一验证. “ ... ” 部分节选自云风的 BLOG. 1. 基于 Erlang-Actor 模式的 C 实现 “把一个符合规范的 C 模块,从动态库(so 文件)中启动起来,绑定一个永不重复(即使模块退出)的数字 id 做为其 handle .模块被称为服务(Service),服务间可以自由发送消息.每个模块可以向 Skynet 框架注册一个 callback 函数,用来接收发给它的消息.每个服务都是被一个个消息包驱动,当没有包…
local skynet = require("skynet") skynet.start(start_func) c服务snlua启动后执行的第一个lua文件里面的主逻辑必定是skynet.start(start_func),由此开始运行lua服务的逻辑 start_func是当前lua服务的初始化函数,也是当前服务的第一个协程的函数 之后在收到非response消息时dispatch_message会创建更多的协程来做逻辑 而调用skynet.start(start_func)的主…
为了了解 skynet.call 的调用过程,需要先看看 skynet的队列是如何把包分到不同工作线程的.看下图 查看 global_queue 的skynet_globalmq_push和skynet_globamq_pop,很容易可以找到两个关键的函数: skyent_context_push 和 skynet_context_message_dispatch 先来看出口,skynet_context_message_dispatch.在skynet的启动函数中,我们已经知道skynet_s…
阅读云大的博客以及网上关于 skynet 的文章,总是会谈服务与消息.不怎么看得懂代码,光读这些文字真的很空洞,不明白说啥.网络的力量是伟大的,相信总能找到一些解决自己疑惑的文章.然后找到了这篇讲解 skynet 消息队列的文章(最新的 skynet 消息队列代码已经有更新,变得更简洁易读).了解了 skynet 消息是如何派发的,就想知道消息被派发出去到一个服务后,如何调用服务的 callback 函数,从而处理此消息.碰巧博主写了这篇讲解 skynet 如何注册回调函数的文章,于是 skyn…
注:为方便理解,本文贴出的代码部分经过了缩减或展开,与实际skynet代码可能会有所出入.    作为一个skynet actor,在启动脚本被加载的过程中,总是要调用skynet.start和skynet.dispatch的,前者在skynet-os中做一些初始化工作,设置消息的Lua回调,后者则注册针对某协议的解析回调.举个例子: local skynet = require "skynet" local function hello() skynet.ret(skynet.pac…