
skynet
文章平均质量分 87
skynet学习
Colin♛
我思故我在
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
skynet源码学习-skynet_handle服务句柄管理
1. handle_name 结构2. handle_storage 结构(核心管理结构)1. void skynet_handle_init(int harbor)2. uint32_t skynet_handle_register(struct skynet_context *ctx)3. int skynet_handle_retire(uint32_t handle)4. void skynet_handle_retireall()原创 2025-06-12 11:15:38 · 561 阅读 · 0 评论 -
skynet源码学习-skynet_timer定时器
时间轮分为5个数组:- near: 一个大小为256的数组,表示最近256个单位时间(10ms)内将要触发的定时器1. skynet_timer_init()2. skynet_timeout(handle, time, session)3. timer_add(T, arg, sz, time)4. add_node(T, arg, sz, time)5. timer_shift(T)6. timer_execute(T)7. dispatch_list(current)原创 2025-06-10 14:03:25 · 633 阅读 · 0 评论 -
skynet中使用skynet.call需要注意挂起的场景
在 skynet 框架中,skynet.call是一个同步调用函数,它会阻塞当前服务直到目标服务返回结果。这意味着如果目标服务执行时间很长或者没有返回结果,当前服务就会处于挂起状态,这可能会导致整个系统的性能下降或甚至崩溃,或因挂起导致逻辑重入,引发错误。原创 2024-12-24 09:37:46 · 453 阅读 · 0 评论 -
skynet-skynet_module解析
中定义了 skynet 框架中用于管理模块的相关结构体和函数声明,框架可以灵活地扩展功能,实现高度的模块化。(1).c 的形式命名的,意味着在 skynet 框架中定义 C 模块时,建议使用 service_ 作为文件名的前缀,以便于在 Makefile 中进行统一的编译和链接处理。: 通过将模块的创建、初始化、释放等功能封装在模块管理器中,实现了模块化设计,提高了代码的可维护性和可扩展性。指向skynet模块的指针,用于与该服务相关联的模块管理。服务的句柄,用于标识唯一的服务实例。原创 2024-04-06 00:06:25 · 1178 阅读 · 1 评论 -
【基于skynet的热更思考】
可以在运行时动态加载 Lua 代码文件,然后调用其中定义的函数,通过修改模块及其函数的upvalue,实现代码的动态注入和执行。这两段核心代码实现了一个动态加载和执行 Lua 代码的功能,通过构建环境表、加载代码并执行,最终返回执行结果。这个函数是实现动态注入功能的关键部分,能够实现在 Skynet 框架中动态加载并执行 Lua代码,完成注入热更脚本。用于调整传入的地址参数,对传入的地址参数进行转换,以保证将热更脚本注入到正确的服务地址。以二进制只读的方式读取文件内容。存放读取到的热更脚本内容。原创 2024-03-23 10:23:46 · 1214 阅读 · 0 评论 -
skynet cluster集群笔记
skynet 是一个基于事件驱动的分布式游戏服务器框架,支持构建高性能、高并发的网络程序。skynet 中的节点是指运行着 skynet 实例的独立服务器。每个节点都有自己的地址和唯一标识符,可以运行不同的服务。节点之间通过网络连接进行通信和协作。在 skynet 中,服务是指运行在节点上的具体功能模块。每个服务都有一个唯一的服务名标识符,可以通过该标识符进行访问和通信。服务可以在同一节点上运行,也可以跨节点部署。skynet 中的集群是指多个节点连接在一起,共同组成一个分布式系统。原创 2024-03-10 13:28:44 · 2307 阅读 · 1 评论 -
skynet-debug console指令集整理
在skynet中,nc调试台是一个用于在运行中的skynet服务和调试器之间建立交互的工具。通过命令行与运行在skynet环境中的服务进行交互和调试,PS: 这里的nc调试台和linux系统中的netcat工具是不同的概念。原创 2024-01-18 12:03:30 · 1475 阅读 · 0 评论 -
skynet优化思考
skynet框架的网络模块是基于socket实现的,但socket本身有很多瓶颈,例如上下文切换,内存拷贝等,因此,可以尝试使用更高性能的网络库(如Libuv),以提高网络性能。skynet框架是基于协程的,通信也是通过协程来实现的,在高并发的情况下,网络通信可能会成为瓶颈,可以考虑对通信机制进行优化,比如使用IO多路复用技术等。对于skynet中的actors,怎样合理分配资源的问题也是需要考虑的,可以通过对调度算法进行优化,使其合理使用CPU和内存资源,从而提高框架的性能。使用更高性能的网络库。原创 2023-10-27 17:18:47 · 429 阅读 · 1 评论