场景:我正在运行一个带有两个 API 和 4 个线程的休息服务器(nghttp2)。
- /something : 需要一些时间来处理
- /anything : 不花时间处理
现在,在客户端,我正在创建一个会话(本质上是一个 TCP 连接)并发出两个异步请求,首先是 /something,然后是 /anything。我注意到的行为是服务器在第一个请求完成之前不会处理第二个请求。在数据包捕获中,我可以看到 HTTP2 多路复用的良好实现。但这不是线头阻塞吗?还是我期望即使请求来自同一个 TCP 连接,也应该并行处理而不是以交错方式处理请求是错误的?
注意:如果我为每个请求创建两个不同的会话或 TCP 连接,那么它们将被并行处理。