0

我正在寻找 macos X 中的高性能进程间通信系统。

什么是最好的系统?AppleEvents还是NSNotifications

4

2 回答 2

1

如果您的目标是高性能和/或可靠性,分布式通知(即通过 NSDistributedNotificationCenter 发送的通知)很可能不是一个好的选择。以下是苹果自己对这个主题的看法:

发布分布式通知是一项昂贵的操作。通知被发送到系统范围的服务器,该服务器将其分发给所有注册了分布式通知对象的任务。发布通知和通知到达另一个任务之间的延迟是无限的。实际上,当发布的通知过多并且服务器的队列已满时,通知可能会被丢弃。http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSDistributedNotificationCenter_Class/Reference/Reference.html

根据“高性能”的含义,您可能想要研究分布式对象或普通的旧 Unix IPC 机制(套接字、管道、共享内存等)。

于 2010-08-07T00:51:47.867 回答
1

如果你同时控制发送者和接收者,你可以在两个进程之间打开一个套接字( man socketpair ),这是相当高的性能。您还可以在共享位置(例如 /tmp )打开文件,然后从一个进程写入文件并从另一个进程读取,这非常快。您还可以在本地计算机上打开两个 TCP/IP 端口,每个进程一个,然后“通过网络”从一个发送到另一个。

如果您仅有的两个选择是 NSNotifications 或 AppleEvents,那么 AppleEvents 可能会表现得更好。

于 2011-07-14T17:58:05.147 回答