次の方法で共有


CreateFiberEx 関数 (winbase.h)

ファイバー オブジェクトを割り当て、スタックを割り当て、指定した開始アドレス (通常はファイバー関数) から開始するように実行を設定します。 この関数は、ファイバーをスケジュールしません。

構文

LPVOID CreateFiberEx(
  [in]           SIZE_T                dwStackCommitSize,
  [in]           SIZE_T                dwStackReserveSize,
  [in]           DWORD                 dwFlags,
  [in]           LPFIBER_START_ROUTINE lpStartAddress,
  [in, optional] LPVOID                lpParameter
);

パラメーター

[in] dwStackCommitSize

スタックの初期コミット サイズ (バイト単位)。 このパラメーターが 0 の場合、新しいファイバーは実行可能ファイルの既定のコミット スタック サイズを使用します。 詳細については、「 スレッド スタック サイズ」を参照してください。

[in] dwStackReserveSize

スタックの初期予約サイズ (バイト単位)。 このパラメーターが 0 の場合、新しいファイバーは実行可能ファイルの既定の予約済みスタック サイズを使用します。 詳細については、「 スレッド スタック サイズ」を参照してください。

[in] dwFlags

このパラメーターが 0 の場合、x86 システムの浮動小数点状態は切り替えされず、ファイバーで浮動小数点演算を使用するとデータが破損する可能性があります。 このパラメータが FIBER_FLAG_FLOAT_SWITCHの場合、ファイバの浮動小数点状態が切り替わります。

Windows XP: FIBER_FLAG_FLOAT_SWITCH フラグはサポートされていません。

[in] lpStartAddress

ファイバーによって実行されるアプリケーション定義関数へのポインターであり、ファイバーの開始アドレスを表します。 新しく作成されたファイバーの実行は、別のファイバーがこのアドレスで SwitchToFiber 関数を呼び出すまで開始されません。 ファイバー コールバック関数の詳細については、「 FiberProc」を参照してください。

[in, optional] lpParameter

ファイバーに渡される変数へのポインター。 ファイバーは 、GetFiberData マクロを使用してこのデータを取得できます。

戻り値

関数が成功した場合、戻り値はファイバーのアドレスです。

関数が失敗した場合は、返される値は NULL です。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

プロセスで作成できるファイバーの数は、使用可能な仮想メモリによって制限されます。 既定では、すべてのファイバーには 1 メガバイトの予約済みスタック領域があります。 そのため、最大 2028 本のファイバーを作成できます。 既定のスタック サイズを小さくすると、より多くのファイバーを作成できます。 ただし、要求の処理に別の方法を使用すると、アプリケーションのパフォーマンスが向上します。

スレッドが SwitchToFiber 関数を使用してファイバーをスケジュールする前に、スレッドに関連付けられたファイバーが存在するように ConvertThreadToFiber 関数を呼び出す必要があります。

この関数を使用するアプリケーションをコンパイルするには、 _WIN32_WINNT を 0x0400 以降として定義します。 詳細については、「 Windows ヘッダーの使用」を参照してください。

要件

要件
サポートされている最小のクライアント Windows XP [デスクトップ アプリ | UWP アプリ]
サポートされている最小のサーバー Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ]
対象プラットフォーム Windows
ヘッダー winbase.h (Windows.h を含む)
Library Kernel32.lib
[DLL] Kernel32.dll

関連項目

ConvertThreadToFiber

FiberProc

繊維

GetFiberData

プロセス関数とスレッド関数

SwitchToFiber