DSS流媒体服务器是由一个父进程构成的,这个父进程分叉出一个子进程,该子进程就是核心服务器。父进程会等待子进程的退出。如果子进程错误退出,则父进程就会分叉出一个新的子进程

核心服务器的作用是充当网络客户和服务器模块的接口,其中网络客户使用RTPRTSP协议来发送请求和接收响应,而服务器模块则负责处理请求和向客户端发送数据包

DarwinStreaming Server中定义了一个Task类。Task类有两个典型的方法,一个是Signal,一个是Run。调用Signal把一个Task加入到TaskThreadTask队列中,等待完成,Run就是完成一个任务的handle。基于Task类,定义了三种类型的Task,分别是IdleTaskTimeoutTask,以及普通的Task

Darwin Streaming Server中,除了主线程以外,有三种类型的线程,分别是TaskThreadEventThread以及IdleTaskThread

  • TaskThread,TaskThread通过运行Task类型对象的Run方法来完成相应Task的处理。典型的Task类型是RTSPSession和RTPSession。TaskThread的个数是可配置的,缺省情况下TaskThread的个数与处理器的个数一致。等待被TaskThread调用并运行的Task放在队列或者堆中。
  • EventThread,EventThread负责侦听套接口事件,在DarwinStreaming Server中,有两种被侦听的事件,分别是建立RTSP连接请求的到达和RTSP请求的到达。对于RTSP连接请求的事件,EventThread建立一个RTSPSession,并启动针对相应的socket的侦听。对于RTSP请求的事件,EventThread把对应的RTSPSession类型的Task加入到TaskThread的队列中,等待RTSP请求被处理。

  • IdleTaskThread,IdleTaskThread管理IdleTask类型对象的队列,根据预先设定的定时器触发IdleTask的调度。TCPListenerSocket就是一个IdleTask的派生类,当并发连接数达到设定的最大值时,会把派生自TCPListenerSocket的RTSPListenerSocket加入到IdleTaskThread管理的IdleTask队列中,暂时停止对RTSP端口的侦听,直到被设定好的定时器触发。

TaskThreadàTask;                    //TaskThread 负责处理Task任务

EventThreadàEventContext;    //EventThread负责处理EventContext中注册的事件

IdleTaskThreadàIdleTask         //IdleTaskThread负责处理IdleTask任务

DSS 代码分析【服务器架构】相关推荐

  1. DSS 代码分析【启动、初始化流程】

    DSS加载module及和module交互的流程,如下: (1).DSS在fork子进程后调用StartServer启动服务 调用OS.OSThread.Socket.SocketUtils.QTSS ...

  2. 深度解析:服务器架构和技术变革

    文章重点分析服务器架构组成.5G对服务器带来的技术变革(计算边界.场景等),边缘计算.云计算对服务器要求(边缘服务器.AI服务器和云服务器),服务器(白牌机.开源服务器,硬件重构和软件定义)和服务器重 ...

  3. 无服务器架构 - 从使用场景分析其6大特性

    2019独角兽企业重金招聘Python工程师标准>>> 无服务器架构 - 从使用场景分析其6大特性 博客分类: 架构 首先我应该提到,"无服务器"技术肯定有服务器 ...

  4. 服务器和微内核系统哪个好,分析微内核架构操作系统优缺点

    <分析微内核架构操作系统优缺点>由会员分享,可在线阅读,更多相关<分析微内核架构操作系统优缺点(2页珍藏版)>请在人人文库网上搜索. 1.分析微内核架构操作系统优缺点一 优点: ...

  5. BT源代码学习心得(七):跟踪服务器(Tracker)的代码分析(HTTP协议处理对象) -- 转贴自 wolfenstein (NeverSayNever)

    BT源代码学习心得(七):跟踪服务器(Tracker)的代码分析(HTTP协议处理对象) author: wolfenstein (NeverSayNever) 上次我们分析了Tracker类初始化的 ...

  6. BT源代码学习心得(六):跟踪服务器(Tracker)的代码分析(初始化) -- 转贴自 wolfenstein (NeverSayNever)

    BT源代码学习心得(六):跟踪服务器(Tracker)的代码分析(初始化) author:wolfenstein Tracker在BT中是一个很重要的部分.这个名词我注意到以前的文章中都是直接引用,没 ...

  7. BT源代码学习心得(八):跟踪服务器(Tracker)的代码分析(用户请求的实际处理) - 转贴自 wolfenstein (NeverSayNever)

    BT源代码学习心得(八):跟踪服务器(Tracker)的代码分析(用户请求的实际处理) author: wolfenstein 通过上一次的分析,我们已经知道了Tracker采用http协议和客户端通 ...

  8. BT源代码学习心得(六):跟踪服务器(Tracker)的代码分析(初始化)

    BT源代码学习心得(六):跟踪服务器(Tracker)的代码分析(初始化) 发信人: wolfenstein (NeverSayNever), 个人文集 标  题: BT源代码学习心得(六):跟踪服务 ...

  9. SRS流媒体服务器架构设计及源码分析丨音视频开发丨C/C++音视频丨Android开发丨嵌入式开发

    SRS流媒体服务器架构设计及源码分析 1.SRS流媒体服务器架构设计 2.协程-连接之间的关系 3.推流-转发-拉流之间的关系 4.如何手把手调试SRS源码 视频讲解如下,点击观看: SRS流媒体服务 ...

最新文章

  1. Linux文件系统:概览(思维导图)
  2. 哪怕你不认可,我还是要为R语言正名
  3. python开发环境配置config_manjaro与python开发环境配置
  4. python培训班那家好-python培训班那个好?
  5. display属性_CSS之使用display:inline-block来布局
  6. c语言不被O2优化,【图片】今天写几个性能测试,为什么C语言跑得这么慢呢??【c语言吧】_百度贴吧...
  7. asp.net配置IIS过程错误解决
  8. A Zero Flow Entry Expiration Timeout P4 Switch
  9. 知乎高赞:985计算机视觉毕业后找不到工作怎么办?
  10. OpenGL着色器程序解析--初识着色器
  11. 安卓开发颜色以及对应代码(转载)
  12. 利用Python编写脚本批量下载公众号中的音频
  13. 逆向工程实验——lab8(C/C++反逆向、Java字节码反逆向)
  14. 【vue】在vue,vue cli中拼接字符串,拼接图片链接
  15. 前锋html5费用,足坛转会费最高的5位前锋,1.05亿欧元仅第5,第1比C罗还高1.22亿...
  16. 【深度首发】灵犀微光CEO郑昱:十万片级AR光学引擎的量产之路丨Xtecher 封面
  17. 无线路由器首次配置、修改WiFi名称和密码—— Cisco实验/家里实验
  18. wordpress添加媒体_如何在WordPress中添加精选内容滑块
  19. 电脑基础知识-电脑不认新硬盘时该怎么办?
  20. 基于FTTH组网的qinq业务的配置

热门文章

  1. NR PRACH(五) type1 RA(4-step)基本过程
  2. 梦里花落知多少,网络抖动逃不了
  3. Java多线程案例之线程池
  4. 程序员节的一点小感触
  5. KMD驱动教程续-11
  6. 华为云数据转发与分析
  7. Tableau图表 | 6、气泡图/树状图/文字云
  8. DM数据库外键设置的解决方式
  9. AI作画:文心一格赋能艺术与设计创作
  10. 数据可视化——R语言绘制散点相关图并自动添加相关系数和拟合方程