我试图弄清楚如何在两台Linux机器之间使用共享内存。理想情况下,每台机器都有自己的共享内存段,并运行两个进程(一个从机器的共享内存中读取数据,另一个从机器的共享内存中写入数据)。当一台计算机的共享内存被写入或更新时,我需要通知另一台计算机,并使自己的共享内存与第一台计算机的共享内存同步。
这可能吗?我该怎么办?
感谢一百万!
答案 0 :(得分:1)
我试图弄清楚如何在两台Linux机器之间使用共享内存。
这是一个坏主意。同步访问共享内存很困难。您将很难阻止多个客户端相互干扰,即使在一台计算机上也是如此。在多台计算机上,情况只会变得更糟。
如果您确实要执行此操作,则实际上有两个选择:
简单方法。创建代表共享内存的文件并将其存储在网络文件共享中。使用mmap()
将其映射到每台计算机的内存中。确保使用msync()
刷新对磁盘的更改并使缓存无效。
复杂的方法。。使用Infiniband链接连接计算机并执行远程内存访问。具体操作方式取决于您使用的Infiniband供应商。
总而言之,完全使用另一种方法可能会更好。详细信息取决于您的应用程序。