MAC OSX 进程间通信

Mac OS下的IPC方式种类很多,大约有下面几种。

1. Mach API

2. CFMessagePort

3. Distributed Objects (DO) NSDistributedNotificationCenter

4. Apple events

5. UNIX domain sockets

6. Internet sockets 或者 XPC(NSConnection)

7. Memory Mapping

还有Pipe,NSTask,消息队列,远程过程调用,通知,信号量和锁设置之类

第1种太底层,很少有人用苹果也不推荐 .

第2,3,4种是苹果提供的较为高层的通讯机制 .

第5,6种大家应该都知道,用sockets方法离散度,移植性更好。5和6有一些区别,5使用unix文件系统作为通讯媒介,可以使用unix文件权限系统做通讯限制,它的另外一个名字就叫ipc sokets,6可以做机器间通讯做本地ipc也可以,不过要额外做一些努力。

第7种适合数据比较大的情况.

1. 假如你的进程间通讯不频繁,只是发送一些异步信号,DO是很好的选择,也就是NSDistributedNotificationCenter.

2. 如果你的进程间通讯频繁,但数据量不大,需要响应度高,domain sockets很好.

3. 最后如果进程间通讯频繁,数据流巨大例如音频,图片等,需要real-time级别的,  选择Memory Mapping.

时间: 2024-11-10 14:49:25

MAC OSX 进程间通信的相关文章

Mac OSX (EI Capitan)搭建Caffe环境并配置python接口

Caffe是一个清晰而高效的深度学习框架,其作者是博士毕业于UC Berkeley的贾扬清.Caffe是纯粹的C++/CUDA架构,支持命令行.Python和MATLAB接口:可以在CPU和GPU直接无缝切换.我在MacbookPro(无NVIDIA显卡)上大费周章地配置了Caffe的环境,并花了许多时间配置其python接口. 一.下载Caffe github上的下载地址:https://github.com/BVLC/caffe进入到下载后的路径,并复制 Makefile.config.ex

Mac OSX系统、Linux、Windows命令行教程

Mac OSX系统.Linux.Windows命令行教程 一.各系统终端的使用方法 二.各系统命令的功能 用你的终端做一些事情 (command line, Terminal, PowerShell). 一.各系统终端的使用方法 Mac OSX 在Mac OSX系统上,你应该 按住 command 键,并敲空格键. 屏幕顶部会弹出一个蓝色的"搜索框". 输入"terminal". 点击终端应用程序,这个程序的图标看起来有点像一个黑盒子. 终端就打开了. 现在你可以在

mac osx下安装mysql

操作系统版本:mac osx 10.11mysql版本:官网下载dmg  v5.6.33  https://www.mysql.com/ 安装步骤1.双击dmg安装2.开启mysql服务系统偏好设置-底部-mysql-打开服务这个时候还不能使用mysql命令,需要配置mysql命令的路径. 3.配置环境变量mysql的路径在当前用户根目录下编辑.bash_profile文件,添加一行:export PATH=${PATH}:/usr/local/mysql/bin 注:/usr/local/my

如何在Mac OSX上安装xgboost

听说xgboost效果很不错,于是准备学习下,但是发现大多数资料都是在讲如何在windows或linux下安装xgboost,而且照着官方文档也没有正确的安装好多线程的xgboost.最后还是从there找到了方法. 1. Mac OSX系统一般自带python,打开终端输入python即可写python代码,所以python环境已经具备了. 2.安装 Homebrew , 类似于ubuntu中的apt-get和centos中的yum,是OSX里面的一个非常有用软件安装工具. /usr/bin/

Webstorm 10 for mac osx 注册机,序列号,kegen

小菜最近get到mac体验机会,早就耳闻mac非常适合做开发,于是迫不及待的安装各种开发工具,不知不觉,轮到前端开发神器webstorm了,看了一下官网的价格,心拔凉拔凉的. 果断搜索注册机,搜到的结果不少,20%是版本太旧,80%需要vip才能下载. 目前最新的是10+版本,勉强可以下载的都是8+版本,不太符合心思,而其他号称9+版本带注册机的,或者10+版本带序列号的,vip才能下载,既然不想买正版,却给盗版充值,哪有这样的道理. 如果读者因为这件事而苦恼,恰好又看到这篇文章,那么您的问题至

Mac OSX下卸载Nodejs

有时手贱看到新版本就升级,升级后发现一堆模块不能用了,心情好慢慢调,但也有调不好的时候,只能卸载重装低版本的node了. 我的机器环境如下 1. Mac OSX 10.10.3 2. node为0.12.2 卸载过程 1. 拷贝如下代码放到一个sh文件中(如uninstall_node.sh) #!/bin/bash lsbom -f -l -s -pf /var/db/receipts/org.nodejs.pkg.bom | while read i; do sudo rm /usr/loc

XE6移动开发环境搭建之IOS篇(7):在Mac OSX 10.8中安装Xcode4.6.3(有图有真相)

XE6移动开发环境搭建之IOS篇(7):在Mac OSX 10.8中安装Xcode4.6.3(有图有真相) 2014-08-23 21:37 网上能找到的关于Delphi XE系列的移动开发环境的相关文章甚少,本文尽量以详细的图文内容.傻瓜式的表达来告诉你想要的答案. 在安装Xcode前,我们先了解下Mac下如何卸载U盘!在VM9下,同一时间内,一个物理设备只能由一个系统去独占,无论是物理机还是虚拟机.我们可以了解一下虚拟机加载U盘的规则:    1.在虚拟机中加载U盘时,会自动将U盘从Wind

XE6移动开发环境搭建之IOS篇(4):VMware9里安装Mac OSX 10.8(有图有真相)

XE6移动开发环境搭建之IOS篇(4):VMware9里安装Mac OSX 10.8(有图有真相) 2014-08-18 21:10 网上能找到的关于Delphi XE系列的移动开发环境的相关文章甚少,本文尽量以详细的内容.傻瓜式的表达来告诉你想要的答案. 以下内容比较长,我们努力地图解每一个步骤,没有耐心的观众可以忽略前27步,直接看第28步最终结果.--------------------------------------------------------------- 1.在虚拟机主界

XE6移动开发环境搭建之IOS篇(6):设置Mac OSX的网络。(有图有真相)

XE6移动开发环境搭建之IOS篇(6):设置Mac OSX的网络.(有图有真相) 2014-08-23 21:37 网上能找到的关于Delphi XE系列的移动开发环境的相关文章甚少,本文尽量以详细的图文内容.傻瓜式的表达来告诉你想要的答案. 我们配置一下MAC的IP,给定一个固定的内网IP,以便我们的XE6能更好地连接它!--------------------------------------------------------------- 1.打开虚拟机,在MAC里,点一下桌面(星空图