资源描述
《深入理解Android:卷I》勘误表
2011-10-11第一次勘误
q 目录XIII ——StartThread Pool,joinThread Pool。这两个单词中间的Pool没有空格。请把P149页中的目录项也修改一下。
q P15,模块 jni.so,中间多了空格。
q P388 代码,Mutext::Autolock 和下面的注释未予sp<BufferSource>一行对齐
q P233页:因为读者可能在等待可写的,改成:写者可能在等待可写的..
q P234页:offset是外界传入的基于userBase的一个偏移量,它的值是userBase+512,
这句话改为:offset的值是user(此时等于1024),而userBase也是1024,所以.....
q P460页:在标题 MTD的介绍那,需要加上引用: 如下图所示(原稿有该项引用,请务必加上)
q P101:如果c为1,则弱引用计数为0,这说明没用弱引用指向实际对象,.....改成没有弱引用...
q P325页下方,[-->SurfaceControl.cpp]改成[-->Surface.cpp]
q P174:第二行,AudioRcorder----改成AudioRecord
q P120页:这三条汇编指令,如果按正常的顺序连续执行,是没有问题的,但在多线程时就不能保证了。例如,线程1在执行第一条指令后,线程2由于调度的原因,抢先在线程1之前连续执行完了三条指令。这样,线程1继续执行指令时,它所使用的值就不是线程2更新后的值,而是之前的旧值。再对这个值进行操作便没有意义了。改成:这三条汇编指令,如果按正常的顺序连续执行,是没有问题的,但在多线程时就不能保证了。例如,线程1在执行第一条指令后,线程2由于调度的原因,抢先在线程1之前连续执行完了三条指令。这样,线程1继续执行指令时,它所使用的值却是线程2更新后的值,而非之前的值。再对这个值进行操作就有可能造成错误的结果。
q P133 代码:AutoMutex _l(gProcessMutex); 代码排版有问题;应该和下面的if语句对齐
q P97: mRefs是引用计数管理的关键类----这句话改成mRefs所属的weakref_impl类是引用计数管理的关键类
q P97:最后一个代码段:内容改成:
weakref_impl(RefBase* base)
: mStrong(INITIAL_STRONG_VALUE)//这里的注释和原稿保持一致。切记!
, mWeak(0)
, mBase(base)
, mFlags(0)
{
}
q P109页:我们先分析Threa 类----》改成我们先分析Thread类
q 第五章,凡是出现Thread.cpp的,均换成Threads.cpp。包括前面的文件位置。谢谢
q P115:显示调用Mutex----》改成显式调用Mutex
q P434:代码段I:[-->Ril.cpp]改成[-->Ril_event.cpp]。本章的文件引用位置,增加一项:在Ril_event.h下增加一个Ril_event.cpp(hardware/ril/libril/Ril_event.cpp)
q P434:最后一行:下面这两行代码初始化一个FD为的s_wakeupfd_event的任务。此句中的s_wakeupfd_event改成s_fdWakeupRead
q P445页:代码段中://SOCKET_NAME_RIL的值为”Ril”,改成值为”rild”。注意全为小写。
q P32:读者在编写代码时务小心对待,改成务必
q P50:zygote是通过fork和execv共同创建的,改成execve
q P90 Watch Dog的中文意思是 看门狗 。这里多了两个空格。紧接的---》后面的“程序经常 跑飞 (比如说电磁干扰等),----也多空格。
q P73:代码段:
else if (index == 0) 前面增加 ......省略符号
q P448:代码中的:AT命令由它发送给Rild,改成Ril命令由它发送给Rild。
q P455:封装了Rild对AT指令的处理函数:改成 封装了Rild对Ril命令的处理函数。
展开阅读全文