我有两个进程通过 TCP 套接字相互通信。进程 A 向进程 B 发送请求并等待响应。进程 B 处理请求,并发送响应。对于某些请求,不需要将响应发送回进程 A。
假设进程 A 首先发送一个不需要响应的请求 X,然后立即发送一个需要响应的请求 Y,当 A 在其套接字上等待数据时观察到明显的小延迟(约 0.04 秒)。这是控制流程:
A sends X
A sends Y
B handles X
B handles Y and writes response
(small delay in waitForReadyRead() in A of ~0.04s)
A receives response for Y
当我也为 X 引入响应并让 A 等待该响应时,延迟消失了,控制流程如下所示:
A sends X
B handles X and writes response
A receives response for X
A sends Y
B handles Y and writes response
A receives response for Y
这显然是某种同步问题,但我无法解释。谁能解释如果 B 没有为 X 发送响应而引起的小延迟?