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

Does it make sense to call async_connect on a unix socket?

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

定义"make sense"。这两种方式都有效,但对风格、架构和性能的影响不同。

数据 Input/Output 尤其是在网络上具有高延迟即延迟,并导致整个模糊 async 编程风格,boost asio 甚至因此得名。

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

但是既然你想要两者,我建议简单地使用 async_connect,因为无论如何你必须以 "async" 风格来组织你的整个程序用于 TCP 情况,而它不会对于 unix 套接字案例有任何缺点(也可能比阻塞套接字更快或具有更高的吞吐量)。并且为了避免不必要的分支特殊情况,被许多人考虑,包括。我是有道理的。