次の方法で共有


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

関連項目

ConvertThreadToFiber

CreateFiberEx

FiberProc

繊維

GetFiberData

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

SwitchToFiber