共享内存和消息传递模型分析,消息传递比共享内存速度快

同样,消息解耦Actor,消息执行成功还是失败,以及需要多少时间 。只要没有消息传递回,就和发件人无关 , 每个进程的共享 内存直接映射到实际的物理内存并且shm保存在物理内存(主存)中 , 实际存储量直接反映在主存中,演员的本质模型:要解决的问题是什么?参与者之间的交流方式只有一种,比如不管是维护者让工人干活还是工人把结果返回给维护者,他们也要发消息传递 information 。

1、Actor 模型的本质:究竟是要解决什么问题Actor之间只有一种通信方式 。比如说,不管是维护者让工人干活,还是工人把结果返回给维护者,他们也要发消息到传递 information 。这样做看起来不如直接调用直接 , 而是因为可以同时执行大量消息 。同样,消息解耦Actor,消息执行成功还是失败,以及需要多少时间 。只要没有消息传递回,就和发件人无关 。
【共享内存和消息传递模型分析,消息传递比共享内存速度快】
2、Android消息 传递BroadCast、Handler和EventBus优缺点广播是最消耗时间和空间的一种方式 。它是四个组件之一,很多系统级的事件都是通过广播通知的,比如电量的变化,网络的变化,短信的接收和发生状态等 。优点:与sdk连接紧密,需要与Android交互时非常方便 。还可以实现跨进程通信 。必要时也可以开始活动 。缺点:占用大量资源 , 需要依赖Contexthandler,一般用于线程间通信 。

使用handler最明显的优点是,当问题发生时,可以非常清楚和快速地定位它 。eventbus的优势在于调度灵活 , 不需要依赖上下文,没有Handler那样的耦合 。继承性、优先级和粘性是EventBus相比广播和观察者的最大优势 。缺点也很明显 。EventBus中的事件分布是由注释函数的参数类型决定的,当接收者太多或参数相同时,很难理清消息流 。

3、 共享 内存实现原理在磁盘上创建一个文件,在每个进程内存中创建一个空间映射保存到实际硬盘上,实际上并不体现在主存中 。这样进程就可以通过映射同一个公共文件来实现 。公共文件映射到进程地址空间后,进程就可以像内存一样访问文件,不需要调用read()和write()等操作 。每个进程的共享 内存直接映射到实际的物理内存并且shm保存在物理内存(主存)中,实际存储量直接反映在主存中 。
通过shmget获取或创建一个IPC共享内存area , 返回对应的标识符 。每个共享 内存 zone都有一个控制结构structshmid_kernel,主要API:shmget()、shmat()、shmdt()和shmctl() 。PS: Python使用多处理,进程传递有多处理,队列,它使用shm 共享 内存机制 。

    推荐阅读