在 XNU(OS X 和 iOS 的内核)中广泛用作 IPC 机制的 Mach 端口充当消息队列的端点。
众所周知,Go Channel 以 CAR Hoare 的通信顺序过程为模型。马赫端口怎么样?不管端口的安全性和权限属性以及 Go Channel 的类型安全性,它们在本质上是否以相同的模式工作?
根据维基百科,马赫端口是:
用于任务之间通信的受保护消息队列;任务拥有对每个端口的发送和接收权限
Go 在其内存模型中实现了一些 CSP 概念。Mach 端口实现可以但不必遵循 CSP。
Mach 端口是一个更高级别的结构,由操作系统内核管理并与两个独立的内存空间通信。Go 通道(通常)通信两个 goroutine。
Go 通道可以被缓冲(有效地构建队列)但不是必须的,而 Mach 端口始终是队列。
Go 通道是键入的,Mach 端口不关心正在传输的信息。
Go 通道不能用于通信两个独立的进程,而 Mach 端口可以。