マルチスレッドのプログラミング

入出力操作の完了の待機

1 つ以上の未処理の非同期入出力操作の完了を、aio_suspend() または aio_waitn() を呼び出すことによって待機することができます。入出力操作の成功または失敗を判定するには、完了した非同期入出力制御ブロックに対して aio_error() および aio_return() を使用します。

aio_suspend() および aio_waitn() 関数には、呼び出し側の待ち時間を示す timeout 引数があります。NULL ポインタを指定すれば、呼び出し側が無期限に待つという意味になります。値 0 が設定されている構造体を指すポインタは、呼び出し側がまったく待たないという意味になります。

非同期入出力操作を開始し別の処理を行なって aio_suspend() または aio_waitn() で操作の完了を待つことができます。あるいは、aio_sigevent() で指定された非同期通知イベントを発生させて操作の完了を通知するという方法もあります。

最後に、保留状態の非同期入出力操作を取り消すときは、aio_cancel() を呼び出します。この関数を呼び出すときは、入出力操作を開始するために使用された入出力制御ブロックのアドレスを指定します。