也许这是一个非常简单的问题,但我没有找到答案。我使用 boost asios tcp 类来处理一个简单的字节协议(protocol)。我做了 async_read_some 并且处理程序做了一些工作。处理程序完成后,我启动另一个 async_read_some。让我们假设这个处理程序做了很多计算。处理程序工作和下一次调用 async_read_some 之间的传入数据是否有可能丢失?
最佳答案
不,您的操作系统将继续接收数据,直到其接收缓冲区/TCP 接收窗口已满。一旦接收缓冲区已满,TCP 的流量控制将确保发送方发送的数据不会超过接收方可以接收的数据量,这样就不会丢失任何数据。
参见 https://www.brianstorti.com/tcp-flow-control/一个很好的解释/例子。
https://en.wikipedia.org/wiki/Transmission_Control_Protocol#Flow_control
关于c++ - 在 tcp 中提升 asio 异步处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56308525/