包含javafock的词条

博主:adminadmin 2022-12-16 23:27:08 71

今天给各位分享javafock的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

Android-zygote进程通信为什么不使用Binder?

首先,zygote进程在创建之后,才会创建SystemServer进程,而SystemServer进程是由zygote进程fock自身得到的,在fock自身的过程中,首先会结束自身的其他子线程,这样一来除了自身线程以外,其他线程都会被结束然后GC,而Binder是多线程模型,如果使用Binder进行进程间通信的话,则Binder线程也会被结束,而使用Binder进行进程间通信就无法做到。在fork新进程后,启动Zygote的4个Daemon线程,java堆整理,引用队列,以及析构线程。而在zygote通过fock自身创建子进程之后,如果该进程不是zygote进程,则会调用ZygoteInit.zygoteInit方法

而在zygoteInit方法中,才会对新创建的进程进行运行环境初始化工作以及启动Binder线程池。

其实Binder线程池的启动,是在SystemServer进程创建过程启动的,而在启动SystemServer的过程中,就需要传入ZygoteServer这个Zygote作为Server端的Socket,所以Zygote进程并不能使用Binder进程进行通信,而只能使用Socket。

而且,Binder线程池是在zygote进程启动之后启动的SystemServer进程中启动的,而SystemServer进程是由zygote进程fock自身得到的,所以zygote进程在启动之后,循环等待SystemServer进程的消息的时候,其实还没有Binder线程池。而且fock只支持当前线程的fock,而不支持多线程的fock,但是Binder又是一个多线程模型,在fock的时候会杀死多余的线程,这样一来,binder线程也就会被杀死,这样就没办法使用binder与SystemServer进程进行进程间通信。

fork 的行为是这样的:复制整个用户空间的数据(通常使用 copy-on-write 的策略,所以可以实现的速度很快)以及所有系统对象,然后仅复制当前线程到子进程。这里:所有父进程中别的线程,到了子进程中都是突然蒸发掉的

javafock的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、javafock的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-16,除非注明,否则均为首码项目网原创文章,转载请注明出处。