skynet源码阅读心得(1)

事实上,我已经用过skynet在自己平时的项目中。其内部的源码实现,我并没有很多关心。最近在看书的时候,发觉c语言还有很多需要挖掘的,刚好把c语言的一些经验,用于解读skynet源码,这倒不失为一次应用理论知识的机会。


了解c语言的人,多数都知道c语言的灵活性质。c语言的难度,并不是在于语法,而是在于即使我们掌握了所有的语法,到了应用的时候忽然发现,还可以这么样子写项目,写产品。把这个说法用到skynet,我认为非常到位。很多喜欢c++的都说c++好,事实上非常好的代码以及框架或者产品,c语言的实现比起c++更轻量级,甚至更好。skynet就是一个非常好的证明。


其实,这次阅读源码,最大的收获是c语言的应用。c语言具有极其多的应用场景,但是以前的了解都是不贴近现实的,都是建立在知道了听说的情况下。我听过说嵌入式c编码,我了解过c写服务器端,我也知道c语言写各种引擎,还知道很多其他语言都是c实现的,例如lua是标准c语言实现的。接触skynet框架,在2014-2015年阅读过一次,不过那一次的效果一般。因为当时的需求更多是应用skynet而不是了解底层实现。大约是经过了4年的时间的接触,发现skynet的应用已经有一定基础,但是还没有达到精通整个结构的成程度,这个时候需要整理一次skynet底层实现了。


当然今天文章的主要作用是目录,认识skynet的关键。我们知道,阅读一份源码或者查看一份引擎源码,需要的基础是了解其内部实现,了解内部实现,则需要知道执行流程,执行流程的获取,需要很深厚的基本功,skynet需要的基础功就是c。这里讲分类讲解阅读skynet需要掌握的知识点,以方便自己甚至有兴趣的人学习和阅读。


第一点,c语言基础。c的语法,这是毋庸置疑的。那么阅读这一份源码,需要c的哪些知识呢?这里仅仅列举我认为需要精通的,如c语言内存对齐,c指针,c内联函数,c宏函数,c锁机制,c多线程。


第二点,网络通信。网络知识不是语法性质的,而是具有应用型的。skynet内部实现是基于linux的,并且网络通信就是socket,套接字。所以阅读源码,需要比较好的网络通信编程知识。例如常见的tcp,又如非阻塞,再如定时器。事实上,skynet内部使用了不同平台的两种IO模型,epoll模型和kqueue模型。两者模型,在2016年我曾经用epoll编写过一次服务器端应用。


第三点,lua知识。这里说明的是,lua知识不仅是lua的语法,事实上lua语法是不够的,还需要掌握c和lua的交互。我们都知道jni,c和java的相互调用和访问行为,也清楚c/js,c/c#等等,事实上这些基础对于了解skynet至关重要。因为skynet在应用中的逻辑层都是要求用lua实现,除非比较极端情况或者非常重要的场合,需要直接使用c编码实现,应用动态库so进行链接,否则一般情况使用lua即可。


阅读源码,是一个过程,也是逐渐掌握框架或者应用到一定级别需要走的路。我们阅读源码的最好效果是,能够独立这种思维模式,去重新实现一套属于自己需要的框架和引擎。如果并不是为了去掌握仅仅是追求欣赏和阅读,个人以为阅读skynet是一种享受,原因是代码量很少。核心代码才几千行。另外,文件结构比较清晰,很适合需要深入学习和提升c的阅读。这里补充一下题外话:公众号带有(1)之类的,后面的部分都会继续编辑。由于每天只能发一篇,所以很多文章的编辑都是在排期的,所以很多文章后面会一一推送。我非常感谢大家的关注和点赞。



©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容