自定义jmpbuf结构—SRS对StateThreads的改进与完善

jmpbuf 的全称其实是 jump buffer,存储的是 longjump 函数所需要的信息。也就是协程的上下文。由于 jmpbuf 在不同的平台内部实现不一样,而且如果 glibc 后面版本如果改变了 jmpbuf 的内存布局,就不能用了。

所以 SRS 为了保证系统的 鲁棒性 跟 扩展性,自己定义了 jmpbuf 的结构。如下:

原来 1.9 版本的 StateThreadsjmpbuf 是使用的 setjmp.h 里面的定义,如下:


我们再看回来 common.h 头文件里面的 struct _st_thread 结构,会发现 context 字段的结构已经变了。


推荐阅读《掀起你的汇编来:如何移植ST协程到其他系统或CPU?》

相关推荐
L_Xian7 小时前
StarrySky重新维护了,摆烂了一段时间,想想还是搞搞吧。
android·github·音视频开发
ryn4839812 天前
关于我是如何用AI创作一个1分半的短视频的
aigc·音视频开发
码流怪侠13 天前
FFmpeg 开发实战全解析:从入门到精通(附完整代码示例)
ffmpeg·音视频开发·视频编码
redreamSo17 天前
HeyGen 开源了一个"用 HTML 写视频"的框架,我研究了一下,发现事情没那么简单
前端·开源·音视频开发
MonkeyKing17 天前
iOS 音频会话 AVAudioSession 完整机制:分类、模式、激活策略
ios·音视频开发
JMchen12323 天前
集成第三方 C/C++ 库到 Android NDK 项目:OpenCV 与 FFmpeg 实战指南
opencv·ffmpeg·音视频开发·cmake·jni·ndk·abi 兼容性
qwfy24 天前
从零实现一个 IM + 直播 App:Kotlin + Compose 多模块架构全流程记录
app·音视频开发·直播
音视频牛哥1 个月前
鸿蒙 NEXT 下 RTSP/RTMP 播放器如何实时调节音量、亮度、对比度与饱和度?
harmonyos·音视频开发·直播
冬奇Lab1 个月前
音视频同步与渲染:PTS、VSYNC 与 SurfaceFlinger 的协作之道
android·音视频开发
冬奇Lab1 个月前
MediaPlayer 播放器架构:NuPlayer 的 Source/Decoder/Renderer 三驾马车
android·音视频开发·源码阅读