Skip to content
阅读进度

如何理解同步 Binder 的等待链? ​

返回 Framework 与系统服务 目录

标准回答 ​

从客户端的调用区间出发,沿Binder事务关联找到目标进程和处理线程。把时间分为事务到达与排队、服务端执行或等待、回复以及客户端恢复运行。

服务端慢可能是线程池没有空闲线程、持锁执行I/O、嵌套调用另一个服务或自身Runnable排队。客户端可能在等待回复后又被调度延迟。需要两端对齐,避免看到binder transaction长就把所有成本都算给驱动。

可修改接口时考虑减少往返、批量查询、合理缓存或异步接口;仍要处理一致性、结果时效和服务死亡。不能只把调用移到后台,再让主线程等待后台的Future。

追问与回答 ​

Binder线程池满,直接增加线程就好了吗 ​

先查线程为何被占住。若都在争同一把锁或等同一个下游,增加线程可能只增加排队和内存,甚至加剧负载。

参考资料 ​

内容来源 ​

用完整回答理解机制,用真实证据解释项目。