AppleEvent против уведомления - PullRequest
       10

AppleEvent против уведомления

0 голосов
/ 07 августа 2010

Я ищу высокопроизводительную систему межпроцессного взаимодействия в macos X.

Какая система лучше?AppleEvents или NSNotifications?

Ответы [ 2 ]

1 голос
/ 14 июля 2011

Если вы контролируете и отправителя, и получателя, вы можете открыть сокет между двумя процессами (man socketpair), что является довольно высокой производительностью. Вы также можете открыть файл в общей папке (например, / tmp) и записать в него из одного процесса и прочитать из другого, что довольно быстро. Вы также можете открыть два порта TCP / IP на локальном компьютере, по одному в каждом процессе, а затем отправлять их с одного на другой «по сети».

Если вы выбираете только два варианта - NSNotifications или AppleEvents, то, скорее всего, AppleEvents будет работать лучше.

1 голос
/ 07 августа 2010

Распределенные уведомления (т.е. уведомления, отправленные через NSDistributedNotificationCenter), скорее всего, не являются хорошим вариантом, если ваша цель - высокая производительность и / или надежность.Вот собственное мнение Apple на эту тему:

Размещение распределенного уведомления - дорогостоящая операция.Уведомление отправляется на общесистемный сервер, который распределяет его по всем задачам, объекты которых зарегистрированы для распределенных уведомлений.Задержка между отправкой уведомления и приходом уведомления в другой задаче не ограничена.Фактически, когда слишком много уведомлений отправлено и очередь сервера заполняется, уведомления могут быть отброшены.http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSDistributedNotificationCenter_Class/Reference/Reference.html

В зависимости от того, что вы подразумеваете под «высокой производительностью», вы можете захотеть посмотреть на распределенные объекты или простые старые механизмы Unix IPC (сокеты, каналы, разделяемая память и т. Д.).*

...