电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

DSS源码分析汇总精华

DSS源码分析汇总精华_第1页
1/5
DSS源码分析汇总精华_第2页
2/5
DSS源码分析汇总精华_第3页
3/5
精品文档---下载后可任意编辑DarwinStreamServer 是苹果公司开发的流媒体视频服务器。我们分析的代码基于版本。一、DSS 启动、初始化流程我们从 Server.tproj/main.cpp 入手,分析 DSS 加载 module 及和 module 交互的流程。(1)、DSS 在 fork 子进程后调用(2)、select_startevents 函数initialize the select() implementation of the event queue.(3)、QTSServer::Initialize 函数继续调用 QTSSModule、QTSServerPres、QTSSMessages、RTSPRequestInterface、 RTSPSessionInterface、RTPSessionInterface、RTPStream、RTSPSession、QTSSFile、QTSSUserProfile 等类的 Initialize 函数,进行 dictionary 的初始化。加载了第一个模块 QTSSErrorLogModule。this->()// set default IP addr& DNS name// begin listening,注意这里传的是 false 参数。this->(,fSrvrPrefs,inPortOverride)(4)、TaskThreadPool::AddThreads(numThreads)// numThreads 为 1到这里,第一个线程创建、运行、被添加到线程池里。在 startBroadcastRTSPSession 函数里,又调用 AddThreads 函数在线程池里添加了一个线程。(5)、TimeoutTask::Initialize()Start up the server's global tasks, and start listening. The timeoutTask mechanism is task based, we therefore must do this after adding task threads. This be done before startingthe sockets and server tasks.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 函数里创建// 到目前为止,这已是第三个启动的线程,分别是任务线程、空闲任务线程、事务线程。(8)、OSThread::Sleep...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

DSS源码分析汇总精华

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部