我想做以下事情:
我有很多电脑。 在每台计算机上运行一个程序。 没有集中式服务器。
程序可以根据定义的标准选择给另一台计算机指定的数据。这样做时,另一台计算机不应该这样做。 (一种2路同步)
我们举个例子。 (C1 .. Cn是在不同计算机上运行的程序)
C1发送C2更新数据。处理处于活动状态时,C2不应要求C1更新其他内容。
这个想法是:
但现在出现了最大的问题。
如果C1发送消息给C2暂停,并且C22在同一个tiem发送消息给C1暂停,两者都会阻塞。
没有用于保持信号量的集中式服务器/共享内存。
是否有其他可以使用的模式,以便n台计算机不会阻塞?
所以这个问题是关于算法排除的。
或者这个问题有另一种解决方法吗?
答案 0 :(得分:1)
为什么不向请求发送回复消息,并以不同的时间间隔重新运行请求;
C1向C2发送消息:PauseExecution()(回复:不行)
C2向C1发送消息:PauseExecution()(回复:不行)
C1接收回复消息(在发送另一条消息之前等待一段随机时间)
C2收到回复消息(在发送另一条消息之前等待一段随机时间)
C1向C2发送消息:PauseExecution()(回复:OK)