管道本身并不是服务器提供的技术,而是客户端改变了与服务端数据交互时的读写顺序,从而大幅节省IO的时间。
客户端与服务端的请求交互:
正常情况下,客户端执行两条指令,写 —> 读 —> 写 —> 读,完整的经历了两个上述的过程,而当客户端使用了管道,则改变了读写的顺序,变为写 —> 写 —> 读 —> 读。
对于管道来说,客户端的第一个read的操作会等待一个网络的来回开销,然后所有的响应信息都已经送回到内核的读缓冲区了,后续的read操作直接就可以从缓冲中拿到结果。
管道本身并不是服务器提供的技术,而是客户端改变了与服务端数据交互时的读写顺序,从而大幅节省IO的时间。
客户端与服务端的请求交互:
正常情况下,客户端执行两条指令,写 —> 读 —> 写 —> 读,完整的经历了两个上述的过程,而当客户端使用了管道,则改变了读写的顺序,变为写 —> 写 —> 读 —> 读。
对于管道来说,客户端的第一个read的操作会等待一个网络的来回开销,然后所有的响应信息都已经送回到内核的读缓冲区了,后续的read操作直接就可以从缓冲中拿到结果。