Loading article…
コンピュータプログラミングにおける非同期とは、メインのプログラムフローとは無関係に発生するイベントと、そのイベントを処理する方法を指します。これらは、シグナルの到着などの「外部」イベント、またはプログラムが結果を待つことなくプログラムの実行と同時に発生するプログラムによって開始されるアクションである可能性があります。[1]非同期入出力は後者の非同期の例であり、プロセッサがプログラムの実行を継続している間に、プログラムがこれらの要求に対応するストレージまたはネットワークデバイスにコマンドを発行できるようにします。これにより、ある程度の並列処理が実現されます。[1]
プログラミングインターフェースで非同期性を扱う一般的な方法は、進行中の操作を表す未来または約束を返すサブルーチンと、未来または約束が完了するまでブロックする同期操作を提供することです。Cilkなどの一部のプログラミング言語には、非同期プロシージャ呼び出しを表現するための特別な構文があります。[2]
非同期の例には次のようなものがあります。
- 非同期プロシージャ呼び出しは、プロシージャを同時に実行するメソッドであり、スレッドの軽量な代替手段です。
- Ajax は、クライアントが非同期 I/O Web アプリケーションを作成するために使用するクライアント側 Web テクノロジのセットです。
- 非同期メソッドディスパッチ(AMD)は、サーバー側で大量の長時間にわたるクライアント要求を処理する必要がある場合に使用されるデータ通信方法です。[3]同期メソッドディスパッチ(SMD)を使用すると、このシナリオではサーバーが利用不可のビジー状態になり、ネットワーク接続要求のタイムアウトによって接続失敗応答が発生する可能性があります。クライアント要求の処理は、スレッドプールから利用可能なスレッドにすぐにディスパッチされ、クライアントはブロッキング状態になります。タスクが完了すると、サーバーはコールバックによって通知されます。サーバーはクライアントのブロックを解除し、応答をクライアントに返します。スレッド不足の場合、クライアントはスレッドが利用可能になるまでブロックされます。
参照
参考文献
- ^ ab Davies, Alex (2012). Async in C# 5.0. O'Reilly. pp. 1–2. ISBN 9781449337124。
- ^ McCool, Michael; Reinders, James; Robison, Arch (2013).構造化並列プログラミング: 効率的な計算のためのパターン. Elsevier. p. 30.
- ^ AMD の ICE の使用状況。
