0

我遇到了有趣的理论问题:

假设我们通过一些 IPC(如 tcp 套接字或命名管道)连接了程序 A 和程序 B。程序 A 向程序 B 发送一些数据,并根据数据传递的成功,A 和 B 执行一些操作。但是,只有在确定 A 已收到交货确认时,B 才应进行操作。所以我们想出了3个连接:A -> B [数据传输] B -> A [交货确认] A -> B [收到交货确认的确认]

它可能看起来很奇怪,但目标是在双方都知道数据已传输之前,既不对 A 也不对 B 执行任何操作。

这就是问题所在,因为第二次连接是为了确认第一次连接成功。第三个是确认第二个,但实际上并不能保证连接 2 和 3 不会失败,在这种情况下,我们会陷入确认的无限循环。是否有一些 CS 理论可以解决这个问题?

4

1 回答 1

1

如果我没看错你的问题,这个问题被称为“两位将军的问题”。问题的要点是,最后一个发送消息或确认的实体对刚刚发送的内容的状态一无所知,依此类推。

于 2012-12-04T15:25:47.407 回答