インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
このトピックは、Windows* にのみ適用されます。
Windows* (IA-32 およびインテル® 64 プラットフォーム) 用のインテルの C/C++ 非同期 I/O (AIO) ライブラリーの実装は、Linux* 用の POSIX* AIO ライブラリーの実装に似ています。
インテルの C/C++ AIO Windows* 実装と標準の POSIX AIO 実装の相違点は次のとおりです。
POSIX AIO の ssize_t 型と __off_t 型の代わりに、intptr_t 型が使用されています。
既存の Linux*/Unix* プログラムを Windows* に移植し、aiocb struct にハンドラー名を設定しないで AIO 完了ハンドラーを設定する場合、Windows* の信号処理方法により、AIO 操作完了時の信号通知は実装できません。既存のアプリケーション移植する場合、または新しいアプリケーションでは、aio_read ルーチンまたは aio_write ルーチンを呼び出す前にハンドラー名を設定すべきです。次に例を示します。
static void aio_CompletionRoutine(sigval_t sigval) { // … code … } … code … my_aio.aio_sigevent.sigev_notify = SIGEV_THREAD; my_aio.aio_sigevent.sigev_notify_function = aio_CompletionRoutine;
POSIX AIO ライブラリーと Microsoft* SDK の AIO 関数は似ています。POSIX AIO 関数と Windows* システム用の AIO 関数との主な相違点は、POSIX ではどのファイルでも AIO 操作を実行できますが、Windows* システムでは FILE_FLAG_OVERLAPPED フラグの付いたファイルでのみ AIO 操作を実行することができます。
次のインテルの非同期 I/O ライブラリー関数はすべて POSIX* AIO 関数に基づいています。これらの関数は、aio.h ファイルで定義されています。