代码分析文档
是苹果公司开发的流媒体视频服务器。我们分析的代码基于
版本 。
一、启动、初始化流程
我们从 入手,分析加载!"#及和!"#交互的流
程。
()、在$子进程后调用 启动服务
调用 % 、 %&! 、 、 '# 、 (&)* 、
(&+$ 、 (& 等类的 +# 函数进行初始化。
()、#,函数
###$-""
(.)、(&//+#函数
继续调用(&*!"#、(&0、(&*、1&01-"+$、
1&0+$、1&0+$、1&0、1&0、
(&2#、(&'03#等类的+#函数,进行!)的初始化。
加载了第一个模块(&45*!"#。
6$"#+07!!
,注意这里传的是
参数。
685$#9$0$90%!
(:)、&&!0#//7!!&!"&!
为
到这里,第一个线程创建、运行、被添加到线程池里。
在;!1&0函数里,又调用7!!&!函数在线程池里添加了一个线程。
()、&"&//+#
"<#=#9!#&"&
=!9$"!$!!!&=!=$
!
&!>?4@&"&&!A
&!6#&//4A
创建一个&"&&!类对象,实际上这个类的名字容易产生混淆,它并不是一个线程类,
而 是一个基于&类的任务类。
因为前面已经在线程池里添加了一个任务线程,所以在这里调用#的时候,就会找到这个线程,
并把事件加入到这个线程的任务队列里,等待被处理。这时,刚才创建的线程应该也在
&&!//4)函数里等待事件的发生
(B)、+!#&//+#
创建并启动空闲任务线程
+!#&!>?4@+!#&&!A +!#&!6A
()、//&!
启动
类的
类所对应的线程。
类在
函数里创