appleevent与通知

时间:2010-08-06 20:30:53

标签: objective-c nsnotifications appleevents

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

什么是最好的系统? AppleEventsNSNotifications

2 个答案:

答案 0 :(得分:1)

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

  

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

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

答案 1 :(得分:1)

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

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