非同期IO (Asynchronous I/O) あるいは非ブロッキングIO(non-blocking I/O)とは、入出力の完了を待たずに、システムコールが終了する入出力処理の実装の事である。たとえば、ダイレクト・メモリ・アクセスで動作するファイル操作であれば、メインメモリ上に存在するデータに対してDMA転送を開始しても、ディスク上に転送が終了するまで、数msの待ち時間が必要になる。この間に、コンピュータはマルチタスク処理で多重処理を行うことが出来るが、処理を発行したプロセスやタスクは、処理の完了を待たなくてはならない。しかし非同期IOでは、処理を発行したプロセスやタスクは、入出力処理の完了を待つことなく、自身の処理を進めることが可能になる。したがって、入出力命令を連続して発行することが可能になり、シングルプロセスのプログラムでも、自身の入出力を多重し、複数の入出力処理を同時並行化できる。このため、時間制約の厳しい、リアルタイムオペレーティングシステムの入出力システムコールでは、このタイプの実装が多い。linuxでは、POSIX-XSIあるいはPOSIX 1003.1bの実装が行われている。基本的な呼び出し方法は、以下のステップである。(1)実行するシステムコールの内容をリンクリストで記述する。(2)リンクリストをパラメータとして、非同期システムコールを発行する(呼び出す)。(3)エラーあるいは、終了しているかどうかを、問い合わせるシステムコールを発行する。(4)終了待ちシステムコールを発行するか、既に発行したシステムコールをキャンセルするシステムコールを発行する。組込型RTOSやミニコンピュータでの実装は、非同期システムコール発行時に、システムサービスコールをOSの処理として行うが、UNIXやlinuxの処理では、ユーザスレッドとして処理を行っている実装が多い。下記の例では、codice_1に続いて、codice_2を実行しているため、実質的にwrite()と同じになる。codice_3
出典:wikipedia
LINEスタンプ制作に興味がある場合は、
下記よりスタンプファクトリーのホームページをご覧ください。