CreateFiber 関数 (winbase.h)
ファイバー オブジェクトを割り当て、スタックを割り当て、指定した開始アドレス (通常はファイバー関数) で開始するように実行を設定します。 この関数はファイバーをスケジュールしません。
コミットと予約の両方のスタック サイズを指定するには、 CreateFiberEx 関数を使用します。
構文
LPVOID CreateFiber(
[in] SIZE_T dwStackSize,
[in] LPFIBER_START_ROUTINE lpStartAddress,
[in, optional] LPVOID lpParameter
);
パラメーター
[in] dwStackSize
スタックの初期コミット サイズ (バイト単位)。 このパラメーターが 0 の場合、新しいファイバーは実行可能ファイルの既定のコミット スタック サイズを使用します。 詳細については、「 スレッド スタック サイズ」を参照してください。
[in] lpStartAddress
ファイバーによって実行されるアプリケーション定義関数へのポインターで、ファイバーの開始アドレスを表します。 新しく作成されたファイバーの実行は、別のファイバーがこのアドレスで SwitchToFiber 関数を呼び出すまで開始されません。 ファイバー コールバック関数の詳細については、「 FiberProc」を参照してください。
[in, optional] lpParameter
ファイバーに渡される変数へのポインター。 ファイバーは、 GetFiberData マクロを使用してこのデータを取得できます。
戻り値
関数が成功した場合、戻り値はファイバーのアドレスです。
関数が失敗した場合は、返される値は NULL です。 詳細なエラー情報を得るには、GetLastError を呼び出します。
解説
プロセスで作成できるファイバーの数は、使用可能な仮想メモリによって制限されます。 たとえば、1 メガバイトの予約済みスタック領域で各ファイバーを作成する場合、最大 2028 ファイバーを作成できます。 モジュール定義 (.def) ファイルの STACKSIZE ステートメントを使用するか、 CreateFiberEx を使用して、既定のスタック サイズを小さくすると、より多くのファイバーを作成できます。 ただし、このような多数のファイバーを作成する代わりに、要求を処理するための代替戦略を使用すると、アプリケーションのパフォーマンスが向上します。
スレッドが SwitchToFiber 関数を使用してファイバーをスケジュールする前に、スレッドに関連付けられたファイバーが存在するように ConvertThreadToFiber 関数を呼び出す必要があります。
この関数を使用するアプリケーションをコンパイルするには、_WIN32_WINNTを 0x0400 以降として定義します。 詳細については、「 Windows ヘッダーの使用」を参照してください。
例
例については、「ファイバーの 使用」を参照してください。
要件
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | winbase.h (Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |