我想做以下事情:
我有好几台电脑。在每台计算机上都会运行一个程序。没有集中式服务器。
该程序可以通过定义的标准选择给另一台计算机指定的数据。这样做时,另一台计算机不应该这样做。(一种2路同步)
让我们举个例子。(C1 .. Cn 是在不同计算机上运行的程序)
C1 发送 C2 更新的数据。当处理处于活动状态时,C2 不应要求 C1 更新其他内容。
当时的想法是:
- C1 向 C2 发送消息:PauseExecution()
- C1 向 C2 发送要处理的项目(更新 C2 上的一些数据)
- C1 向 C2 发送消息:ResumeExecution()。
- C2 向 C1 发送消息:PauseExecution()
- C2 向 C1 发送要处理的项目(更新 C1 上的一些数据)
- C2 向 C1 发送消息:ResumeExecution()。
但是现在最大的问题来了。
如果 C1 向 C2 发送消息以暂停,并且 C22 同时向 C1 发送消息以暂停,则两者都会阻塞。
没有用于保持信号量的集中式服务器/共享内存。
是否有另一种可以使用的模式,以便 n 台计算机不会阻塞?
所以这个问题是关于算法排除的。
或者这个问题还有另一种解决方法吗?