我遇到了有趣的理论问题:
假设我们通过一些 IPC(如 tcp 套接字或命名管道)连接了程序 A 和程序 B。程序 A 向程序 B 发送一些数据,并根据数据传递的成功,A 和 B 执行一些操作。但是,只有在确定 A 已收到交货确认时,B 才应进行操作。所以我们想出了3个连接:A -> B [数据传输] B -> A [交货确认] A -> B [收到交货确认的确认]
它可能看起来很奇怪,但目标是在双方都知道数据已传输之前,既不对 A 也不对 B 执行任何操作。
这就是问题所在,因为第二次连接是为了确认第一次连接成功。第三个是确认第二个,但实际上并不能保证连接 2 和 3 不会失败,在这种情况下,我们会陷入确认的无限循环。是否有一些 CS 理论可以解决这个问题?