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

本文详细介绍了DSS服务启动过程中的模块加载与交互流程,包括子进程启动、各类初始化函数调用、线程创建与管理、任务调度机制等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DSS加载module及和module交互的流程,如下:

(1)、DSS在fork子进程后调用StartServer启动服务

              调用OS、OSThread、Socket、SocketUtils、QTSSDictionaryMap、

              QTSServerInterface、QTSServer等类的Initialize函数进行初始化。

(2)、select_startevents函数

                    initialize the select() implementation ofthe event queue.

 (3)、QTSServer::Initialize函数

         继续调用QTSSModule、QTSServerPres、QTSSMessages、RTSPRequestInterface、

      RTSPSessionInterface、RTPSessionInterface、RTPStream、RTSPSession、

         QTSSFile、QTSSUserProfile等类的Initialize函数,进行dictionary的初始化。

         加载了第一个模块QTSSErrorLogModule。

         this->SetDefaultIPAddr()             //set default IP addr& DNS name

      

         // begin listening,注意这里传的是false参数。

         this->CreateListeners(false,fSrvrPrefs,inPortOverride)

 (4)、TaskThreadPool::AddThreads(numThreads)              // numThreads为 1

         到这里,第一个线程创建、运行、被添加到线程池里。

         在startBroadcastRTSPSession函数里,又调用AddThreads函数在线程池里添加了一个线程。

 (5)、TimeoutTask::Initialize()

       Startup the server's global tasks, and start listening. The timeoutTask mechanism istask

         based, we therefore mustdo this after adding task threads. This be done before starting

         the sockets and servertasks.

 

       sThread= NEW TimeoutTaskThread();

         sThread->signal(Task::kStartEvent);

       创建一个TimeoutTaskThread类对象,实际上这个类的名字容易产生混淆,它并不是一个线程类,而       是一个基于Task类的任务类。

         因为前面已经在线程池里添加了一个任务线程,所以在这里调用signal的时候,就会找到这个线程,

         并把事件加入到这个线程的任务队列里,等待被处理。(这时,刚才创建的线程应该也在

         TaskThread::Entry函数里等待事件的发生)

 (6)、IdleTask::Initialize()

         // 创建并启动空闲任务线程

       sIdleThread= NEW IdleTaskThread();              sIdleThread->Start();


(7)、Socket::StartThread()

         // 启动Socket类的sEventThread类所对应的线程。sEventThread类在Socket::Initialize函数里创建

         // 到目前为止,这已是第三个启动的线程,分别是任务线程、空闲任务线程、事务线程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值