在unix套接字上调用async_connect是否有意义?

问题描述 投票:1回答:1

我正在使用asio来构建一个可以通过TCP或unix套接字连接到远程系统的网络库。我使用asio::generic::stream_protocol::socket,它有connectasync_connect方法。在作为客户端连接到unix套接字时使用async_connect是否有意义?

c++ boost-asio
1个回答
3
投票

定义“有意义”。两种方式都有效,但对样式,架构和性能有不同的影响。

特别是在网络上的数据输入/输出具有高延迟,即延迟,并导致整个模糊的异步编程风格,提升asio甚至得名。

因此在TCP情况下使用阻塞connect将是一个非常糟糕的选择,因为整个线程正在等待几个ms直到发生某些事情并且不能做任何其他事情,而在IPC即unix套接字的情况下它将是正常的。

但既然你想要两者,我建议简单地使用async_connect,因为你必须以TCP的情况的“异步”方式组织你的整个程序,并且它对unix socket案例没有任何缺点(可能是也比阻塞更快或具有更高的吞吐量)。并且不做不必要的分支特殊情况,被许多人认为包括。我是有道理的。

© www.soinside.com 2019 - 2024. All rights reserved.