SRS4.0源码分析-state-thread - 弦外之音

/ 0评 / 0

本文采用的 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


相关阅读:

  1. 《state-thread 官网文档》

杨成立 在 issue 里面放了几篇 st-thread 库的分析 文章

  1. 《state-threads代码分析》
  2. 《MSG_ZEROCOPY 在 st 上的应用》
  3. 《如何让 st 支持多线程》
  4. 《协程原理:函数调用过程、参数和寄存器》

由于笔者的水平有限, 加之编写的同时还要参与开发工作,文中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果读者有任何宝贵意见,可以加我微信 Loken1。QQ:2338195090。

发表回复

您的电子邮箱地址不会被公开。