TCP / IP套接字编程中的同步和异步传输有什么区别?

时间:2013-07-05 05:03:02

标签: multithreading asynchronous tcp network-programming synchronous

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

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

1 个答案:

答案 0 :(得分:13)

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

  2. 在您发送请求,接收回复,显示或处理回复的意义上,HTTP是同步的。

  3. Ajax是异步的,因为它独立于周围HTTP请求中的页面请求/响应周期而运行。这是一个糟糕的术语选择。最好使用“嵌套”,“带外”这样的术语,......