无限确认循环

时间:2012-12-04 15:22:00

标签: sockets tcp computer-science named-pipes computation-theory

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

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

这可能看起来很奇怪,但目标是在双方都知道数据已被转移之前,不要在A和B上都做任何操作。

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

1 个答案:

答案 0 :(得分:1)

如果我正确地阅读了您的问题,则问题称为“the two general's problem”。该问题的要点是,发送消息或确认的最后一个实体对其刚刚发送的内容的状态一无所知,等等。