在共享地址空间模型中,进程之间共享一个公共地址空间,并表示为内存中的数据结构(如ConcurrentHashMap
)。这提供了非常快速的数据共享的优势,因为共享对象位于单个计算机上(为了简单起见,我们假设如此)。由于进程可能发生冲突,各种锁机制(互斥锁)有助于确保访问共享内存时的互斥。这种方案缺乏可扩展性,因为处理器数量的增加会几何地增加共享内存上的流量,并且单台计算机最多只能有 8 个处理器。
在消息传递模型中,没有全局地址空间的意义。每个进程都有一个私有的本地内存。进程可以通过传递消息相互通信。与共享地址空间不同,消息传递模型提供了处理器和内存之间的可伸缩性,尽管需要复制公共数据。处理器的增加也会成比例地增加内存(用于该数据)的大小,尽管在这种情况下不需要锁定机制。
阅读“Thinking in Java”以获得灵感,我发现只有一个关于具有同步原理的共享地址空间模型的讨论。随着我的问题变得越来越复杂,我将尝试消息传递范式,据我所知,这本书没有介绍过。
您能否推荐 Java 本机类或任何经过验证的外部库来使用消息传递模型,例如 C++ 中的 MPI?任何指向该来源的链接将不胜感激!