Альтернативы уведомлению
Уведомления являются всего одним возможным решением. Они обычно - хорошее решение, но в некоторых случаях, можно хотеть использовать различные средние значения межпроцессного совместного использования данных. В этой главе описываются некоторые альтернативные механизмы.
Передача сообщений и вызов удаленной процедуры APIs
Распределенные объекты, события Apple и другие подобные технологии являются хорошими решениями, когда необходимо получить ответ, чтобы указать, что клиент получил уведомление изменения состояния. Этот раздел кратко описывает эти технологии и обеспечивает указатели на дальнейшую документацию.
События Apple
События Apple являются передачей сообщений Углерода API. События Apple API позволяют Вам отправить уведомление о событии в другое приложение и получить ответное сообщение. Можно узнать больше в Руководстве по программированию Событий Apple.
Распределенные объекты
Распределенные объекты являются вызовом удаленной процедуры Какао API. Распределенные объекты позволяют одному приложению вызвать методы Objective C в другом приложении и получить возвращаемое значение. Можно узнать больше в Распределенных Объектах, Программируя Темы.
Другие технологии передачи сообщений и вызова удаленной процедуры
Другие методы передачи сообщений в OS X включают Маха, обменивающегося сообщениями, сокеты, каналы и стандартный ввод и вывод. Эти методы объяснены в Поддержке Плагина Перекрестной архитектуры в 64-разрядном Руководстве по Переходу.
Отображение памяти и общая память
Отображение памяти и другие методы общей памяти обеспечивают хороший способ переместить большие количества данных между двумя приложениями. Когда два приложения должны переместить данные по постоянной основе, опрос может быть более эффективным, чем уведомления. Например, два аудиоприложения, соединенные буфером, были бы слабым соответствием для уведомлений, потому что приложение получения должно считать данные регулярно даже в отсутствие уведомления.
OS X обеспечивает несколько способов совместно использовать память, в зависимости от Ваших потребностей.
Для аудио необходимо использовать Аудио-очередь API (часть платформы Core Audio). Этот API описан в Ссылке Audio Queue Services Programming Guide and Audio Queue Services.
Для общего совместного использования памяти самый простой механизм для использования mmap(2)
системный вызов. Этот системный вызов позволяет Вам отображать файл или часть этого в пространство памяти Вашего процесса, эффективно давая Вам подсказку только для чтения или указатель чтения-записи в содержание самого файла. Путем отображения файла одновременно в многократные процессы, можно легко создать общую память между этими процессами. (Обратите внимание на то, что прежде, чем вызвать этот системный вызов, необходимо сначала создать файл, затем расширить его до надлежащего размера.)
Двумя другими способами совместно использовать память является POSIX и общая память System V APIs. Поскольку общая память POSIX API является более новым и более гибким, необходимо одобрить общую память POSIX API для новых приложений, если Вы не должны поддерживать другие вычислительные платформы, где это не доступно.
Можно узнать больше об общей памяти POSIX в shm_open(2)
и shm_unlink(2)
страницы руководства.
Можно узнать больше об общей памяти System V в shmat(2)
, shmctl(2)
, shmget(2)
, и shmdt(2)
страницы руководства.
Можно учиться как файлам карты распределения памяти в mmap(2)
страница руководства. Для нахождения простого примера этого метода посмотрите Поддержку Плагина Перекрестной архитектуры в 64-разрядном Руководстве по Переходу.