srs代码学习(2)- 线程模型
来源:互联网 发布:智慧树网络课程app 编辑:程序博客网 时间:2024/05/18 03:00
代码阅读到现在。发现srs有两大类线程。一个是主线程的逻辑。
一个是监听线程簇。结构图如下
一定还有第三种线程模型,负责底层的多路分发。今天还没有发现。
2016.08.25--21:00
仔细阅读了state-threads的介绍,特别是setjmp()和longjmp()函数,发现了一下代码
这个是创建线程的函数。仔细搜索其中的thread变量,会发现其实本身并没有创建一个新的线程,额只是在堆上分配了一个新的stack.代码如下thread = (_st_thread_t *) sp;
这个thread只是一个结构体。
这么说来,整个程序都是在一个主线程上做调用。而不存在线程的切换。一系列同步锁等问题。这一点还有在以后代码阅读中在做体会。
虽然大概搞明白了,但这里面的理念包括代码,已经超越我的认知了。这怎么可能呢?
2016-08-26 15:00
发现了一个新的线程簇,用了做rtmp协议的收发,结构图如下
分析过好,发现这个类线程簇是在上一类线程的基础上。增加了rtmpser模块接收或者发送数据,由于有了消息的概念所以多了几个新的类,包括SrsCommonMessage类,
这个类的是rtmp消息专用类,虽然在名字中没有体现出来。
阅读全文
0 0
- srs代码学习(2)- 线程模型
- srs代码学习(2)- 线程模型
- srs代码学习(3)-链接管理
- srs代码学习(8)--rtmp发送
- srs代码学习(1)--listen建立过程
- srs代码学习(4)-怎么转发流
- srs代码学习(6)--如何实现edge
- srs代码学习(7)--消息接收过程
- srs代码学习(9)----http_api处理流程
- srs代码学习(1)--listen建立过程
- srs代码学习(1)--listen建立过程
- srs代码学习(4)-怎么转发流
- srs代码学习(5)--一些与运营相关的技术点
- SRS 代码分析
- LDA模型学习(代码)
- LDA模型学习(代码)
- SRS 代码分析【服务器启动】
- SRS 代码分析【HLS切片】
- LeetCode 86.Partition List
- Angular2 从搭建环境到开发
- 关于DNF的多媒体包NPK文件的那些事儿(8)
- linux下导入、导出mysql数据库命令
- 目录处理命令mv
- srs代码学习(2)- 线程模型
- 543. Diameter of Binary Tree (二叉树的直径)
- NPM常用命令
- “阻塞”与"非阻塞"与"同步"与“异步"
- 数据结构上机实践第四周项目3
- container_of分析
- 一个超级隐蔽的坑:关于excel
- JDBC之Dao模式
- Http与RPC通信协议的比较