老师可以分享下2-2课堂关于跑在Binder线程和跑在工作线程,如何取舍的三个问题的答案吗?

来源:2-2 说说Android系统的启动

JackGlasses

2019-05-22

1、为什么系统服务不都跑在Binder线程里呢?
2、为什么系统服务不都跑在自己私有的工作线程里呢?
3、跑在Binder线程和跑在工作线程,如何取舍?

写回答

1回答

风语

2019-05-23

谢谢您的提问,

1)binder线程是大家一起共享的,如果系统负载很重,binder线程池忙碌,可能影响系统服务响应的实时性,另外如果任务太耗时,长时间占用binder线程也不妥。

2)不可能每个服务都启动一个工作线程,一共上百个系统服务,线程开太多了会内存溢出的。而且太多线程之间切换对性能不利。

3)总的来说,对于实时性要求不那么高,并且处理起来不太耗时的任务可以就放在binder线程里。另外启动工作线程也可以避免同步的问题,因为应用程序跨进程调用过来是在binder线程池,通过切到工作线程可以让binder调用序列化,不用到处上锁。



5
1
JackGlasses
非常感谢!
2019-05-23
共1条回复

剖析Framework面试 冲击Android高级职位

一手助力冲刺Android高级职位,一手把握系统底层原理,理清面试思路,提升技术段位

1406 学习 · 187 问题

查看课程