インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
このトピックは、Windows* にのみ適用されます。
インテルの C++ 非同期 I/O クラスの実装には、async 名前空間に async_class テンプレート・クラスと thread_control ベースクラスの 2 つのメインクラスがあります。
ヘッダー/typedef 定義は次のとおりです。
namespace async { template<class A> class async_class: public thread_control, public A }
async_class テンプレート・クラスは、thread_control ベースクラスに統合された I/O 操作の非同期実行をサポートします。
STL ストリーム操作のキューの非同期実行を制御する機能はすべて、thread_control ベースクラスにカプセル化され、async_class テンプレート・クラスに継承されます。
ほとんどの場合、ソースファイルで aiostream.h ヘッダーファイルを追加し、ファイル・オブジェクトを新しい async:async_class テンプレート・クラスとして宣言するだけです。ストリームクラスの初期値は、テンプレート・クラスの引数でなければなりません。これにより、定義されている出力演算子 << と入力演算子 >> が非同期に実行されます。
aiostream.h ヘッダーファイルには、STL ストリームの I/O 操作で thread_control クラスの非同期機能を使用するのに必要なすべての宣言が含まれています。また、標準の C++ STL ストリームの I/O 操作の拡張機能 (出力演算子 >> と入力演算子 <<) に必要な宣言も含まれています。
同期化メソッド wait() を呼び出して、ファイル・オブジェクトを使用する I/O 操作の完了を待機することができます。wait() が明示的に呼び出されない場合は、オブジェクトのディストラクターで暗黙的に呼び出されます。
次のメソッドは、async_class テンプレート・クラスのパブリック・インターフェイスを定義します。
インテルの C++ 非同期 I/O テンプレート・クラスは、非同期操作中のオブジェクトの整合性や有効性を制御しません。これらはユーザーが制御する必要があります。
Visual Studio* 2003 環境では、アプリケーションを安定させるために、libacaio.lib ライブラリーの C++ 部分をマルチスレッドの msvcrt ランタイム・ライブラリーとリンクしてください。/MT または /MTd コンパイラー・オプションを使用します。