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

时间:2019-02-21 09:02:33

标签: c++ boost-asio

我正在使用asio构建可通过TCP或UNIX套接字连接到远程系统的网络库。我使用同时具有asio::generic::stream_protocol::socketconnect方法的async_connect。在作为客户端连接到UNIX套接字时使用async_connect是否有意义?

1 个答案:

答案 0 :(得分:3)

定义“有意义”。两种方法都可以工作,但是在样式,体系结构和性能上有不同的含义。

尤其是在网络上的数据输入/输出具有很高的延迟(即延迟),并导致整个模糊的 async 编程风格,boost asio甚至也因此而得名。

因此在TCP情况下使用阻塞connect是一个非常糟糕的选择,因为整个线程正在等待几毫秒,直到某事发生并且无法执行其他任何操作,但在这种情况下可以IPC,即unix套接字。

但是由于两者都想做,所以我建议只使用async_connect,因为对于TCP情况,您必须以“异步”样式来组织整个程序,并且它没有任何缺点unix套接字的情况(可能比阻塞的情况更快或更具有更高的吞吐量)。而且,不使不必要的分支成为特殊情况,很多人认为。我说得通。