Rest nghttp2服务器在不同线程上处理来自客户端的多个请求

Rest nghttp2服务器在不同线程上处理来自客户端的多个请求,rest,http2,nghttp2,Rest,Http2,Nghttp2,我正在使用nghttp2实现一个RESTful API服务器。我定义了两个GET API: /api/ping和/api/wait。虽然对前者的响应会立即发送,但服务器在响应后者之前会进行一些处理。我为服务器分配了4个线程 从一个客户端(也使用nghttp2实现),我与服务器建立了连接,并逐个调用API,/API/wait,然后是/API/ping。我使用Wireshark观察到两个GET请求是通过两个不同的TCP数据包发送的。但是,在服务器完成/api/wait的处理之前,它不会处理/api/

我正在使用
nghttp2
实现一个RESTful API服务器。我定义了两个GET API:
/api/ping
/api/wait
。虽然对前者的响应会立即发送,但服务器在响应后者之前会进行一些处理。我为服务器分配了4个线程

从一个客户端(也使用
nghttp2
实现),我与服务器建立了连接,并逐个调用API,
/API/wait
,然后是
/API/ping
。我使用Wireshark观察到两个GET请求是通过两个不同的TCP数据包发送的。但是,在服务器完成
/api/wait
的处理之前,它不会处理
/api/ping
,尽管它还有其他可用线程

我从客户端建立了两个TCP连接,并对不同的连接进行了两个API调用,服务器并行处理这些连接


这是否意味着
nghttp2
在一个线程上以独占方式处理一个TCP连接,并且来自一个TCP连接的请求按设计顺序处理?
nghttp2
中是否有任何设置可以避免此问题?这可能是web应用程序(按顺序处理请求)的一个好功能,但不是API相互独立的API服务器。

您的代码是否在某个地方可用?谢谢,从等待处理程序派生线程应该可以工作,类似于以下内容:谢谢,您的解决方案可以工作。但是,它在创建和销毁线程时不会有性能问题吗?此外,这种方法需要我知道哪些API比较慢,以便将任务委托给不同的线程。>但是它在创建和销毁线程时不会有性能问题吗?是的,您需要一个线程池来避免这些问题。>此外,这种方法需要我知道哪些API更慢,以便将任务委托给另一个真正的线程。但是,为了提高性能,需要进行权衡,如果流是由不同的线程处理的,则必须添加锁定以同步写入同一底层TCP连接的不同线程。