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

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

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

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


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


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

相关推荐
花椒技术3 天前
2.46 秒生成 5 秒视频:拆解 H3 Max 的模型、推理栈与硬件协同
算法·音视频开发·视频编码
代码小学僧9 天前
从 0 到 1,记录我的第一个出海 SaaS 独立开发项目
前端·rpc·音视频开发
贾伟康10 天前
【HarmonyOS 7新能力|041】弱网直播优化工程封装:把接入逻辑放进可维护的分层结构
性能优化·harmonyos·arkts·音视频开发·直播
用户380341658829712 天前
Broadcast Extension 里的 Live Activity:一次跨进程妥协
ios·音视频开发
用户380341658829713 天前
macOS 录屏:ScreenCaptureKit 与 iOS 的分野,共用引擎的抽象层该切在哪
ios·音视频开发
用户380341658829715 天前
FFmpeg 在 iOS 上的裁剪、集成与包体控制
ios·音视频开发
花椒技术16 天前
把 AI 视频接进直播:提前生成、按次生成、持续生成怎么选?
agent·音视频开发
老孙讲技术16 天前
把连锁门店轮询抓拍和遮挡叫醒接进督导台-setDeviceSnapEnhanced与setMessageCallback
后端·物联网·音视频开发
用户380341658829719 天前
手写 fMP4 muxer:从 ISO 14496-12 到能播的文件
ios·音视频开发
字节跳动视频云技术团队21 天前
火山引擎 AI MediaKit X 懂车帝,探索汽车内容智能创作新方式
人工智能·音视频开发