Binder通信是依赖于多线程机制的,多线程机制和fork系统调用存在冲突。
fork本质是task_struct的复制,而多线程实现也是通过多个task_struct实现的,
fork仅会复制调用线程的task_struct,同时又复制了mm_struct。本身逻辑上就存在问题。
永远不要在多线程应用里面调用fork。
套接字是传统的UNIX进程间通信方式,和fork可以有着非常好的协作,
鉴于zygote复用资源的核心机制是fork,所以通信方式选用了套接字。
Binder通信是依赖于多线程机制的,多线程机制和fork系统调用存在冲突。
fork本质是task_struct的复制,而多线程实现也是通过多个task_struct实现的,
fork仅会复制调用线程的task_struct,同时又复制了mm_struct。本身逻辑上就存在问题。
永远不要在多线程应用里面调用fork。
套接字是传统的UNIX进程间通信方式,和fork可以有着非常好的协作,
鉴于zygote复用资源的核心机制是fork,所以通信方式选用了套接字。