我是C ++的新手,我正在尝试开发基于boost :: asio库的客户端 - 服务器应用程序。我(仍然)无法正确理解同步和异步模式之间的区别。我以前研究过HTTP和AJAX等Web协议服务。从this explanation开始,很明显HTTP是同步的,而AJAX是异步的。在同步和异步方面TCP套接字通信有什么区别?从企业级多线程应用程序开发的角度来看哪种模式更好,为什么?
据我了解同步模式,客户端会阻塞一段时间,直到它从服务器收到数据包/数据消息。在异步模式下,客户端执行另一个操作而不阻止当前操作。为什么会有所不同? async是UDP的同义词吗?它似乎并不关心它是否收到传输确认。
答案 0 :(得分:13)
TCP传输始终是异步的。什么是同步或异步是API的行为。同步API在您调用它时会执行操作:例如,send()
将数据移动到TCP发送缓冲区并在完成后返回。异步API在您调用它时启动,在它返回给您后独立执行,并回调您或提供可通过其通知完成的可查询句柄。
在您发送请求,接收回复,显示或处理回复的意义上,HTTP是同步的。
Ajax是异步的,因为它独立于周围HTTP请求中的页面请求/响应周期而运行。这是一个糟糕的术语选择。最好使用“嵌套”,“带外”这样的术语,......