web-dev-qa-db-ja.com

TCP / IPソケットプログラミングにおける同期送信と非同期送信の違いは何ですか?

私はC++を初めて使用し、boost :: asioライブラリに基づいてクライアントサーバーアプリケーションを開発しようとしています。私は(まだ)同期モードと非同期モードの違いを正しく理解できていません。私は以前、HTTPやAJAXなどのWebプロトコルサービスを研究しました。 この説明 から、HTTPが同期であり、AJAXが非同期であることが明らかです。TCPソケット通信の違いは何ですか?同期と非同期のどちらですか?エンタープライズレベルのマルチスレッドアプリケーション開発の観点から、どちらのモードが優れていますか?また、その理由は何ですか?

私が同期モードを理解しているように、クライアントはサーバーからパケット/データメッセージを受信するまでしばらくの間ブロックします。また、非同期モードでは、クライアントは現在の操作をブロックせずに別の操作を実行します。なぜこれが違うのですか?非同期はUDPと同義ですか?送信確認を受信して​​もかまわないようです。

8
abhi abhi
  1. TCP送信は常に非同期です。同期または非同期とは、APIの動作です。同期APIは、呼び出し中に処理を実行します。たとえば、send()はデータをTCP送信バッファーに移動し、完了すると戻ります。非同期APIは、呼び出すと開始します。それは、あなたに戻った後に独立して実行され、あなたにコールバックするか、完了を通知するための問い合わせ可能なハンドルを提供します。

  2. HTTPは、要求の送信、応答の受信、応答の表示または処理をすべてこの順序で行うという意味で同期的です。

  3. Ajaxは、周囲のHTTPリクエストのページリクエスト/レスポンスサイクルとは独立して動作するという意味でのみ非同期です。用語の選択としては不適切です。 「ネストされた」、「帯域外」などの用語を使用したほうがよいでしょう。

14
user207421