10

我是 C++ 新手,我正在尝试开发基于 boost::asio 库的客户端-服务器应用程序。我(仍然)无法正确理解同步和异步模式之间的区别。我之前研究过 HTTP 和 AJAX 等 Web 协议服务。从这个解释中,很明显 HTTP 是同步的,而 AJAX 是异步的。TCP套接字通信在同步和异步方面有什么区别?而从企业级多线程应用开发的角度来看,哪种模式更好,为什么?

据我了解同步模式,客户端会阻塞一段时间,直到它从服务器接收到数据包/数据消息。而在异步模式下,客户端在不阻塞当前操作的情况下执行另一个操作。为什么这不一样?异步是 UDP 的同义词吗?它似乎不在乎它是否收到传输确认。

4

1 回答 1

17
  1. TCP 传输始终是异步的。同步或异步是 API 的行为。同步 API 在您调用它时执行操作:例如,send()将数据移动到 TCP 发送缓冲区并在完成时返回。异步 API 在您调用它时启动,在它返回给您后独立执行,然后回调您或提供一个可询问的句柄,通过该句柄通知完成。

  2. HTTP 在您发送请求、接收响应、显示或处理响应的意义上是同步的,所有这些都是按此顺序进行的。

  3. Ajax 仅在它独立于周围 HTTP 请求中的页面请求/响应周期运行的意义上是异步的。这是一个糟糕的术语选择。使用“嵌套”、“带外”等术语会更好。

于 2013-07-05T05:30:34.293 回答