一、Looper(Native)序言 学习此篇前,请确认掌握了eventfd以及epoll的使用 简介 在Android P源码分析之Handler(JAVA)篇中,我们分析了Java层的消息循环处理流程,其中Looper扮演着不断从消息队列中取出 ...
Android P源码分析之RefBase & sp,wp
一﹑RefBase类简介 RefBase类引入了计数概念,当类的引用计数为0的时候会自动释放类对象.该方式代替传统手动释放类对象 示例类定义class LocalRefBase : public RefBase{public: LocalRefBase() ...
Android P源码分析之Handler(JAVA)
简介 Handler是线程间通讯的载体,它通过异步操作将Message事务入队到目标线程的消息队列中,最终目标线程通过出队列的方式处理传递过来的Message事务,从而实现线程间通讯 这里我们将生产Message事务的线程称为生产者线程,处理Mes ...
Linux基础知识之IO多路复用epoll
简介epoll是linux为监听多路IO的状态所实现的方法. 如上图所示,我们前面在介绍eventfd和socketpair的时候,例子用的都是同步阻塞IO的方式.在单一使用的时候,看不出明显的问题.但是当2者同时使用的时候,如果你想同时监听eventfd和socket ...
Linux基础知识之socketpair
简介 socketpair会创建一对无名套接字的描述符,具有全双工通信特性(描述符可读也可写),他的域只能为AF_UNIX(本地). 应用场景 socketpair主要用于C/S模式的进程间通讯.由于binder通信具有透传fd的特性,使得sock ...
Linux基础知识之eventfd
简介 eventfd顾名思义它就是一个用于事件通知的fd.多用于用户态进程中多线程之间相互通知,也可用于内核事件通知 应用场景 如上图所示,在相同进程中,乙线程无事件可处理时会进行休眠等待.一旦来事件需要处理,甲线程会通过eventfd通知乙线程唤 ...
Linux基础知识之IO操作
简介 IO顾名思义就是input/output.俗话说linux一切皆文件,对文件的操作不外乎就读和写.这里我们来介绍read和write函数. 函数原型readSYNOPSIS#include <unistd.h>ssize_t read(int fd, vo ...
Linux基础知识之错误码表
这里列出常见的Linux错误码,方便核对系统调用发生err时,出错的原因是什么.你也可以在代码中使用strerror打印错误描述.#include <errno.h>#include <string.h>printf("err reason : %s\n", strerror ...
Android P源码分析之一:准备篇
序言 俗话说万事开头难,如果你看到此篇文章,恭喜你,说明你已经迈出了第一步. 源码分析是一个痛并快乐的过程,其中最重要的一点是要坚持.刚进入源码世界的童鞋们,可能你看一会就会感觉到头晕目眩,云里雾里的感觉.这点是很正常的,你在审视着源码,源码同时也 ...