Skynet
文章平均质量分 65
fan_music
没有对象的c++开发
展开
-
skynet源码阅读<7>--死循环检测
除了for循环之外的其它循环,比如while或repeat,在LUA中都是通过条件判断结合JMP跳转来实现的,因此也是可以被检查报错的。至此,如何打断死循环并报错跳出的处理我们已经清楚了,可是新的问题又来了,skynet中是如何检测到死循环发生的呢?这样,当线程X处理消息陷入长久的阻滞时,monitor线程便会检测到X正在处理消息(skynet_monitor->destination不为空)并且version未改变,给出警告。可以看到,signal为0时,将skynet_sig_L置空。原创 2024-07-28 16:47:35 · 505 阅读 · 0 评论 -
lua socket客户端 lua string.pack字符串打包
lua socket客户端 lua string.pack字符串打包_gdut17的博客-CSDN博客原创 2023-04-20 15:00:23 · 296 阅读 · 0 评论 -
Lua反射调试
Lua反射转载 2022-06-21 11:10:26 · 510 阅读 · 0 评论 -
skynet 服务相关api
skynet 服务相关api转载 2022-06-20 16:50:28 · 1094 阅读 · 0 评论 -
skynet分析
http://www.doczj.com/doc/cf10511267.html原创 2022-06-20 15:13:30 · 114 阅读 · 0 评论 -
SKYNET CONFIG
include "config.path"-- preload = "./examples/preload.lua" -- run preload.lua before every lua service runskynetdir = "/home/arch/git/skynet/"thread = 8logger = nillogpath = "."harbor = 1address = "127.0.0.1:2526"master = "127.0.0.1:2013"star...原创 2022-01-02 17:51:59 · 2990 阅读 · 0 评论 -
skynet学习(一)
...原创 2021-06-16 12:03:48 · 138 阅读 · 0 评论 -
Skynet服务器框架——C源码剖析启动流程
在Linux下配置安装 skynet 的环境这里略过,为了从底层更好地理解整个框架的实现过程,我们有必要剖析一下源码,由于底层的源码都是用C语言写的,lua脚本基本是用来进行业务层开发,所以我们从C源码开始解读框架。打开下载包的 skynet-src 目录,这里是skynet框架的核心C源码,接下来我们就要来解读 skynet_main.c 和 skynet_start.c 这两个与skynet启动相关的C源码。1.入口函数和初始化:我们启动 skynet 使用的指令 ./skynet exampl转载 2021-06-08 09:29:02 · 435 阅读 · 0 评论 -
skynet原理解析
https://www.jianshu.com/p/27f40bdd142c原创 2021-06-02 20:54:01 · 167 阅读 · 0 评论 -
Skynet 服务创建流程
根据设计综述Skynet 是为了让服务器充分利用多核优势,将不同的业务放在独立的执行环境中处理。Skynet 核心功能是加载一个 C 模块(动态库),模块用数字 id 标识,作为其 handle ,模块被称为服务 service。服务间可以自由发送消息。每个模块可以向 Skynet 框架注册一个 callback 函数,用来接收发给它的消息。每个服务是被一个个消息驱动,当无消息时,服务处于挂起状态。每个服务拥有一个属于自己的消息队列,框架中存在一个全局队列负责调度处理服务所接收到的消息。代码层面..转载 2021-06-02 20:51:24 · 1118 阅读 · 0 评论 -
skynet1.0阅读笔记_skynet的启动
首先看skynet的启动,函数入口在 skynet_main.c 的main(),其中最重要的是: skynet_start(&config);在skynet_start中做了两个启动: //启动了snlau服务,然后加载launch服务 bootstrap(ctx, config->bootstrap); //创建monitor,timer,socket,worker线程等 start(config.转载 2021-06-02 20:17:37 · 378 阅读 · 0 评论 -
skynet 学习笔记
游戏服务器开发中的其中一个难点:隔离性。在C/C++写的服务器中,一行代码中的空指针访问,就会导致整个服务器进程crash。解决方式是:沙盒机制。Skynet 的沙盒是利用Lua 实现的, 称为服务snlua。下面重点讲这个沙盒是如何实现的Skynet 启动 沙盒启动API snlua 启动Skynet 启动Skynet 启动过程, 主要是启动了一些沙盒服务。Skynet 配置文件一般是Config文件。按照默认配置,启动时,部分日志如下: $ ./sk...转载 2021-06-02 20:10:23 · 493 阅读 · 0 评论 -
skynet服务的本质与缺陷
skynet服务的本质与缺陷https://blog.csdn.net/mycwq/article/details/47379277原创 2021-04-29 20:30:07 · 155 阅读 · 0 评论 -
skynet消息及一些源码解析
skynet消息及一些源码解析技术标签:skynet消息1.skynet消息基本组成每个 skynet 服务,最重要的职责就是处理别的服务发送过来的消息,以及向别的服务发送消息。每条 skynet 消息由五个元素构成。1.1 session 消息标识大部分消息工作在请求回应模式下。一个服务向另一个服务发起一个请求,而后收到请求的服务在处理完请求消息后,回复一条消息。session 是由发起请求的服务生成的,对它自己唯一的消息标识。回应方在回应时,将 session 带回。这样发送方才能识别出哪.转载 2021-04-28 10:23:20 · 532 阅读 · 0 评论 -
lua热更新学习
lua热更新学习什么是热更新,对于它的理解,正如云风所说的那样,热更新更多的用途是做不停机的 bug 修复,不应用于常规的版本更新。对于热更新的博客,网上看了不少,包括云风写的一篇热更文章。也仔细看了snax的热更部分实现细节。发现有不少可以吸取之处。并把核心部分抽取出来,做个简单分享。至于怎么个热更新法,更新的是哪些内容,我的理解是,热更新最好只更新模块中的一小部分,比如其中的某个函数,而不是将这个模块都一起更新替换。尽量做到小改动,以达到最终目的。至于更新的思路,我归纳为两点:将模...转载 2021-04-16 17:26:03 · 830 阅读 · 0 评论 -
snax学习
snax学习snax是一个方便 skynet 服务实现的简单框架。(简单是相对于 skynet 的 api 而言)在空余时间,看了下源码的实现,发现在实现上别具一格,让自己对 skynet的玩法上和 lua 的语法上有了更深的体会。个人对 snax 服务的理解:对 skynet.call、skynet.send 封装,能通过操作一张表的方法就能达到 call、send 的效果。 对于远程rpc调用,也能达到一样的效果。不需要显示的用 cluster.xxx 调用。 可以做到简单的热更新,转载 2021-04-16 17:24:10 · 329 阅读 · 0 评论 -
skynet.pack序列化学习
skynet.pack序列化学习引言对于序列化概念,如果是学习过Java的人,相信一定不会陌生,序列化就是将对象的数据、状态转换成能够存储或者传输的过程。目前常用的有Json、Protobuf、Thrift等。然而,skynet对于服务之间的通讯,数据序列化采用的是 skynet.pack,反序列化 skynet.unpack。skynet.pack和skynet.unpack那么skynet.pack 是以什么方式来序列化的呢?我们可以通过 skynet.lua 这个文件里面看到,s.转载 2021-04-16 17:22:36 · 718 阅读 · 0 评论 -
skynet newservice API参考
local skynet = require("skynet")skynet.start(start_func)c服务snlua启动后执行的第一个lua文件里面的主逻辑必定是skynet.start(start_func),由此开始运行lua服务的逻辑start_func是当前lua服务的初始化函数,也是当前服务的第一个协程的函数之后在收到非response消息时dispat...转载 2019-09-13 11:29:20 · 1068 阅读 · 1 评论 -
skynet linux ubuntu 环境配置
skynet linux ubuntu 环境配置2016年09月30日 09:21:18 柯南君Co 阅读数 1908版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34497362/article/details/52708784需要安装下linux系统,推荐用ubuntu kylin系统。因为下面的方式都是基于ubuntu ...转载 2019-07-24 13:31:24 · 396 阅读 · 0 评论