我正在尝试弄清楚如何在两台 Linux 机器之间使用共享内存。理想情况下,每台机器都有自己的共享内存段,并且运行两个进程(一个从机器的共享内存中读取,另一个向机器的共享内存中写入)。当一台机器的共享内存被写入或更新时,我需要通知另一台机器,并将其自己的共享内存与第一台机器的共享内存同步。
这可能吗?我怎样才能做到这一点?
感谢一百万!
最佳答案
I'm trying to figure out how I might be able to work with shared memory between two Linux machines.
这是一个坏主意。同步访问共享内存很困难;即使在一台机器上,您也很难防止多个客户端相互干扰。在多台机器上,情况只会变得更糟。
如果你真的想这样做,你基本上有两个选择:
简单的方法。创建一个文件来表示共享内存并将其存储在网络文件共享上。使用
mmap()
将其映射到每台机器上的内存中。确保使用msync()
将更改刷新到磁盘并使缓存无效。复杂的方式。使用 Infiniband 链路连接机器并执行远程内存访问。如何执行此操作的详细信息取决于您使用的 Infiniband 供应商。
综上所述,完全使用另一种方法可能会更好。详细信息将取决于您的应用程序。
关于c - 两台Linux机器之间共享内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51955523/