上一页 1 ··· 17 18 19 20 21 22 23 24 25 ··· 101 下一页
摘要: 这本书主要分享了作者在实现公司内部的分布式服务系统中积累的多线程和网络编程方面的经验,并介绍了C++ 在编写这种分布式系统的服务端程序时的功能取舍与注意事项,书中的很多决策(design decision)是在这一应用场景下做出的。这本书没有细谈分布式系统的设计,只在第9章列举了分布式系统的挑战及其对程序设计(服务端编程)的影响,例如可靠性、可维护性等。以下是各章直接的交叉引用关系图(没有计算引用次数),其中第0章是前言,字母章节是附录。可见第9章“分布式系统工程实践”是被引用最多的一章,全书很多内容都是为它做铺垫。这本书的书名原本打算叫“Linux C++ 多线程系统编程”。写作中发现,与其 阅读全文
posted @ 2013-02-19 15:52 博文视点(北京)官方博客 阅读(341) 评论(0) 推荐(0) 编辑
摘要: Android中native进程内存泄露的调试技巧红狼博客代码基于Android2.3.x版本Android为Java程序提供了方便的内存泄露信息和工具(如MAT),便于查找。但是,对于纯粹C/C++ 编写的natvie进程,却不那么容易查找内存泄露。传统的C/C++程序可以使用valgrind工具,也可以使用某些代码检查工具。幸运的是,Google的bionic库为我们查找内存泄露提供了一个非常棒的API--get_malloc_leak_info。利用它,我们很容易通过得到backtrace的方式找到涉嫌内存泄露的地方。代码原理分析我们可以使用adb shell setprop libc. 阅读全文
posted @ 2013-01-31 10:00 博文视点(北京)官方博客 阅读(6092) 评论(0) 推荐(0) 编辑
摘要: Looper中的消息队列处理机制Looper也提供了消息的定义、消息的发送、消息的处理者的自定义和消息队列。在其头文件Looper.h中,定义了消息结构体Message,它只有一个类型成员,Message的定义如下(见文件Looper.h,下同): 消息的处理者可由MessageHandler进行处理:使用者可通过派生出子类来扩展消息。对消息的处理,需要在MessageHandler的子类中重载handleMessage函数。它们将被封装到消息“信封”MessageEnvolope中,然后送到消息队列中。MessageEnvolope的定义如下:Looper中维护着一个自己... 阅读全文
posted @ 2013-01-31 09:27 博文视点(北京)官方博客 阅读(370) 评论(0) 推荐(0) 编辑
摘要: 《深入剖析Android系统》第9章RIL补充配图《深入剖析Android系统》一书中第9章的RIL部分的函数层层调用,可以用插图的方式标示出主要的调用关系。由于插图较大,不适合16开的书籍尺寸大小,故未将相关插图放到《深入剖析Android系统》一书中。读者在阅读该章内容时,可以在电脑上放大插图来查看函数的调用关系。注:这些插图绘制于2009年,基于Android的Cupcake版本,但亦适用于Android的后续新版本。1.RIL调用关系概略图:2.RIL调用关系详图:3. RIL调用关系详图中的分发(dispatch)部分:4.RIL调用关系详图中的读取部分(reader):5. Rad 阅读全文
posted @ 2013-01-29 13:49 博文视点(北京)官方博客 阅读(287) 评论(0) 推荐(0) 编辑
摘要: Looper中的睡眠等待与唤醒机制C++类Looper中的睡眠和唤醒机制是通过pollOnce和wake函数提供的,它们又是利用操作系统(Linux内核)的epoll机制来完成的。当被监控的文件(通过epoll_ctl的EPOLL_CTL_ADD添加进去)可I/O时,epoll_wait调用会从睡眠中醒来,这时,可以检查是哪个(或哪些)文件描述符对应的文件可以进行I/O读写了,从而做出进一步处理。使用者利用它们就可以拥有睡眠等待和唤醒机制。下面详述。在Looper的构造函数中,会创建一个管道(下面的行73),然后调用epoll_create获取一个epoll的实例的描述符(行88),最后将管道 阅读全文
posted @ 2013-01-29 13:30 博文视点(北京)官方博客 阅读(1025) 评论(0) 推荐(0) 编辑
摘要: Looper对文件描述符的监控与处理上面提到的管道的读端是一种文件描述符,那么其他的文件描述符,如普通的文件、设备文件和套接字(包括套接字对)等的描述符,都可以被Looper用来监控,实现类似于上面的消息队列的唤醒和处理机制。通常,消息是通过消息队列发送的,也可以通过套接字(比如已建立好连接的套接字)、设备文件来发送;当然,也包括管道。对一个文件描述符进行监控后,只要有可I/O事件发生,那么调用了pollOnce的调用者(如某个线程)将被唤醒,然后就可调用指定的处理者(如回调函数)对到来的数据(若为可读事件的话)进行处理。Looper提供了addFd函数用于添加需要监控的文件描述符,这个文件描 阅读全文
posted @ 2013-01-28 14:45 博文视点(北京)官方博客 阅读(773) 评论(0) 推荐(0) 编辑
摘要: EventThread线程对VSync的接收EventThread被设计用来接收VSync事件通知,并分发VSync通知给系统中的每一个感兴趣的注册者。VSync来源自底层硬件驱动程序的上报,对于Android能看到的接口来说,它是来自HAL层的hwc_composer_device的抽象硬件设备。若硬件不支持,则HWComposer会创建一个线程去模拟产生VSync事件通知。一旦工作起来,VSync将像一个脉搏一样,不断通知到Surfaceflinger中的EventThread线程,由后者再分发给感兴趣的注册者。先来看一下EventThread何时被创建并开始运行的。在SurfaceFl. 阅读全文
posted @ 2013-01-25 14:22 博文视点(北京)官方博客 阅读(458) 评论(0) 推荐(0) 编辑
摘要: 前面提到,EventThread在接收到VSync后再将它们分发给感兴趣的注册者,分发的过程是在其线程循环threadLoop函数中完成的。读者也可以先阅读后面一节内容,先了解感兴趣的注册者如何得到VSync通知以及系统中可能存在哪些感兴趣的注册者后,再回来阅读本小节。 阅读全文
posted @ 2013-01-24 16:06 博文视点(北京)官方博客 阅读(683) 评论(0) 推荐(0) 编辑
摘要: 深入剖析Android系统(基于Google发布的Jelly Bean原始代码,讲述Android系统的内部静态结构关系和内部运行机制,为你呈现原汁原味的Android代码分析大餐!)杨长刚著ISBN978-7-121-19374-32013年1月出版定价:59.00元464页16开编辑推荐基于Google发布的Jelly Bean原始代码,讲述Android系统的内部静态结构关系和内部运行机制,为你呈现原汁原味的Android代码分析大餐!同类书推荐:《Android内核剖析》《Android系统源代码情景分析》内容提要本书以Android Jelly Bean(4.1)的代码为蓝本,对An 阅读全文
posted @ 2013-01-24 15:51 博文视点(北京)官方博客 阅读(429) 评论(0) 推荐(0) 编辑
摘要: 演讲能力并非与生俱来的,通过锻炼可以不断熟练。一场成功的演讲,除了好的内容之外,还需要哪些?本场讲座,《演讲达人成长记》的作者为你讲解站姿、手势、走动、面部表情等组成完美演讲的必要条件。 阅读全文
posted @ 2013-01-22 14:04 博文视点(北京)官方博客 阅读(231) 评论(0) 推荐(0) 编辑
上一页 1 ··· 17 18 19 20 21 22 23 24 25 ··· 101 下一页