老师可以分享下2-2课堂关于跑在Binder线程和跑在工作线程,如何取舍的三个问题的答案吗?
来源:2-2 说说Android系统的启动
JackGlasses
2019-05-22
1、为什么系统服务不都跑在Binder线程里呢?
2、为什么系统服务不都跑在自己私有的工作线程里呢?
3、跑在Binder线程和跑在工作线程,如何取舍?
写回答
1回答
-
谢谢您的提问,
1)binder线程是大家一起共享的,如果系统负载很重,binder线程池忙碌,可能影响系统服务响应的实时性,另外如果任务太耗时,长时间占用binder线程也不妥。
2)不可能每个服务都启动一个工作线程,一共上百个系统服务,线程开太多了会内存溢出的。而且太多线程之间切换对性能不利。
3)总的来说,对于实时性要求不那么高,并且处理起来不太耗时的任务可以就放在binder线程里。另外启动工作线程也可以避免同步的问题,因为应用程序跨进程调用过来是在binder线程池,通过切到工作线程可以让binder调用序列化,不用到处上锁。
512019-05-23
相似问题
老师可以把课后题的答案分享一下吗
回答 2
binder还有同进程传递?
回答 1