skynet源码解析(二)——源码目录结构

从github上下载源码之后(至于如何下载源码,请浏览系列教程前面的部分),浏览目录结构可以看到,skynet的源码结构是这样的

有些源码是c语言写的,主要是底层的实现,为了性能考虑的。而有些是lua写的,比较偏向于游戏业务方面。

3rd:存放第三方的代码,有lua和jemalloc等,其中jemalloc是一个内存分配的库,用来提高malloc的性能,但是如果你打开jemalloc目录的话会发现里面什么东西都没有,实际上在Linux下编译,会在编译的时候,自动下载相关的文件到放到这里。

examples:框架的示例,启动skynet的配置文件也在这里。

lualib:使用Lua写的库

lualib-src:c语言编写的封装给lua使用的库,编译后生成的so文件在luaclib中(如bson.so, skynet.so, sproto.so等),提供C层级的api调用,如调用socket模块的api,调用skynet消息发送,注册回调函数的api,甚至是对C服务的调用等,并导出lua接口,供lua层使用,可以视为lua调C的媒介。

service:lua写的服务,按我的理解是这里所写的服务都是和业务层关系最密切的一部分,这里的服务都是lua写的,每个服务都被称作lua虚拟机。所以刚开始看到这个lua虚拟机的时候,感觉有点吓人,好像和那个java虚拟机一样很复杂。实际上并不是的,这里只是一个个独立的服务而已。

service-src:使用c写的并封装给Lua使用的服务,编译后生成的so文件在cservice中(如gate.so, harbor.so, logger.so, snlua.so)

skynet-src:c语言写的skynet核心代码,编译后产生skynet可执行文件,这是整个框架中最的核心代码。

test:lua写的一些测试代码,可以方便开发人员学习。

以上就是一些比较核心需要了解知道的文件,其他的一些关于编译以及平台的一些文件并不是很重要。或许看到以上文件介绍,脑子里可能有点乱,我在网上找了张图,可能一下子就比较清楚了解了整个源码架构了。

这样子形象化的结构可能更加容易记住,这里skynet只允许上层调用下层,而不允许下层直接调用上层的api。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员一点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值