为什么使用Binder而不是其他IPC机制

本文搬运自:Advantages of using Binder for IPC in Android

使用Binder而不是其他(Semaphores , Message Queue, PIPES)作为IPC通信机制的理由:

  1. 所有基于文件系统IPC通信机制( 尤其pipes),由于缺少一个可以被所有程序读写的地方,这个地方用来让所有的进程可以mkfifo/create 基于文件系统/socket形式的IPC端口。( 尽管可以使用/dev/socket,但它只能被系统进程,比如rile, zygote)
  2. 没有一种进程通信机制有Android需要的定位service(service location)的能力。在UNIX有PRC portmapper,而Android也需要相似的功能。(Android中的ServiceManager可以用来方便地注册/查找service)
  3. 有大量需要序列化的场景--比如intent、或其他message。Binder提供parcel抽象,它可以使用Parcel.java对数据进行封装。
  4. SysV 有一些严重的问题,比如说竞态条件、缺少权限控制。
  5. Message queues和管道不能传递description。UNIX Domain socket可以,但是不被使用(理由同1)
  6. Binder真的很轻量,并且自带权限机制。它也有一些非常漂亮的特点,比如唤醒recipient process,以及共享内存,这是其他机制所没有的。
  7. Binder从Palm开始就被使用了。以前的Palmer去了Android,然后同时将他们的代码带了进去。
posted @   陈哈哈  阅读(1299)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 单线程的Redis速度为什么快?
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
历史上的今天:
2013-04-29 工厂模式
2012-04-29 设置和读取Cookie
2012-04-29 禁用ViewState
点击右上角即可分享
微信分享提示