《SRS原理》上架了,深度剖析 SRS 源代码,访问地址:srs.xianwaizhiyin.net
本文采用的 SRS 版本是 4.0-b8 , 下载地址:github
由于 SRS 主要使用的 是 state-thread 协程库,这个库是 8年前的, 《state-thread 官网文档》。
从 git 记录看出来,杨成立 对这个库做了一些改进。如下:
1,支持 龙芯 架构。
2,ST 最后的版本 1.9 ,使用的是 glibc 的结构体 jmpbuf,这需要知道这个结构体的布局。glibc 后面版本如果改变了布局,就不能用了。所以杨成立直接修改了 ST 的 _st_md_cxt_save
跟 _st_md_cxt_restore
函数,不使用 glibc 的 jmpbuf,自己定义 jmpbuf 来保存寄存器。
推荐阅读《掀起你的汇编来:如何移植ST协程到其他系统或CPU?》
所以,如果要深入 理解 SRS,必须先掌握 ST
源码的原理,ST 的代码量相对较少,可以很容易理解逻辑。如果直接看SRS的代码,协程的原理会被大量的业务逻辑干扰,不利于新人学习协程。
state-thread
的代码分析请看专栏《state-thread源码分析》
杨成立 对于 GO 语言的研究。
https://github.com/ossrs/srs/wiki/GoDevGuide
相关阅读:
杨成立 在 issue 里面放了几篇 st-thread 库的分析 文章
由于笔者的水平有限, 加之编写的同时还要参与开发工作,文中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果读者有任何宝贵意见,可以加我微信 Loken1。QQ:2338195090。