Mac 上的高带宽数据流最有效的进程间通信方法是什么?

What's the most efficient inter-process communication method for a high-bandwidth data stream on a Mac?

我有一个 C++ 程序(运行 在 MacOS/X 下)生成高带宽数据流(大约每秒 27 兆字节)。第二个 C++ 程序接收该数据并以(软)实时方式处理它。低延迟和高可靠性都是该系统的目标。由于我无法控制的情况,这两个进程需要保持独立——也就是说,我不能将它们转换为同一进程中的两个线程。

目前我正在使用 UDP 数据包(由进程 A 发送到进程 B 正在侦听的 127.0.0.1 上的 UDP 端口)来实现此数据传输,以及或多或少的 -有效(对偶尔丢失的数据包取模),但我想知道是否没有针对此用例的更多 efficient/appropriate 机制。 Unix pipe() 会更有效或更可靠吗?或者我应该将数据写入 mmap()'d shared memory region, and use a pipe/socket/semaphore/etc to synchronize the two processes' 写入和读取?还是 UDP-over-the-loopback-device 已经足够高效以至于切换到另一种方法几乎没有什么好处?

如果您可以管理同步,您肯定无法击败共享内存。内存中的单个副本,没有其他移动。你唯一的 "slow" 观点是关于谁能做什么、在哪里做的任何争吵。