gpt4 book ai didi

android - 在 Android 中使用 Binder for IPC 的优势

转载 作者:IT老高 更新时间:2023-10-28 23:41:08 28 4
gpt4 key购买 nike

在 Android 堆栈中使用 Binder for IPC 相比(信号量、消息队列、PIPES)有什么优势?

最佳答案

老问题(并且可能没有被发帖人关注),但值得回答:

A) 所有基于文件系统或文件系统可表示的 IPC 机制(尤其是管道)都不能使用,因为缺少全局可写目录,所有进程都可以在该目录中 mkfifo/创建它们的文件系统/套接字表示IPC 端口(尽管/dev/socket 用于系统进程,例如 rile、zygote 等)。

B) 建议的机制均不具备 Android 所需的“服务定位”功能。在 UNIX 中,有一个 RPC 端口映射器,而 Android 需要类似的功能。输入:ServiceManager,它可以使用 binder 注册为上下文管理器,以动态注册/查找服务句柄

C) 对序列化有广泛的需求——无论是 Intent 还是其他消息。 Binder 提供了 Parcel 抽象,Parcel.java 可以将其用于数据编码(marshal)。

D) SysV 有比 Lambada 先生的回答更重要的其他问题,尤其是竞争条件和缺乏授权。

E) 消息队列和管道不能传递描述符。 UNIX 域套接字可以使用,但不能使用,因为 (A)(同样,除非您是 root/系统,例如 zygote、rild、installd..)

F) Binder 非常轻量级,并且具有内置的授权机制。它还具有一些漂亮的功能,例如唤醒接收进程,以及内存共享,这是其他机制根本没有的。 (记住,没有 mmap(2),因为 (A) 中命名映射的文件问题)。

还有——别忘了

G) Binder 是在 Palm 上启动的(啊,怀旧)(q.v. OpenBinder)。前掌门人进入了 Android,并带来了他们的代码。

关于android - 在 Android 中使用 Binder for IPC 的优势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7469337/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com