Share via


CreateFiberEx 函式 (winbase.h)

配置 Fiber 物件、將它指派給堆疊,並設定執行以在指定的起始地址開始,通常是 Fiber 函式。 此函式不會排程光纖。

語法

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

參數

[in] dwStackCommitSize

堆疊的初始認可大小,以位元組為單位。 如果此參數為零,新的光纖會使用可執行文件的默認認可堆疊大小。 如需詳細資訊,請參閱 線程堆疊大小

[in] dwStackReserveSize

堆疊的初始保留大小,以位元組為單位。 如果此參數為零,新的光纖會使用可執行文件的預設保留堆疊大小。 如需詳細資訊,請參閱 線程堆疊大小

[in] dwFlags

如果此參數為零,則 x86 系統上的浮點狀態不會切換,而且如果光纖使用浮點算術,則數據可能會損毀。 如果此參數 FIBER_FLAG_FLOAT_SWITCH,則會針對光纖切換浮點狀態。

Windowsxp: 不支援 FIBER_FLAG_FLOAT_SWITCH 旗標。

[in] lpStartAddress

由光纖執行之應用程式定義函式的指標,代表光纖的起始位址。 在另一個光纖呼叫具有此位址的 SwitchToFiber 函式之前,才會開始執行新建立的光纖。 如需光纖回呼函式的詳細資訊,請參閱 FiberProc

[in, optional] lpParameter

傳遞至光纖之變數的指標。 光纖可以使用 GetFiberData 宏來擷取此數據。

傳回值

如果函式成功,傳回值就是光纖的位址。

如果函式失敗,則傳回值為 NULL。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

備註

進程可建立的光纖數目受限於可用的虛擬記憶體。 根據預設,每個光纖都有 1 MB 的保留堆疊空間。 因此,您最多可以建立 2028 個光纖。 如果您減少預設堆疊大小,您可以建立更多光纖。 不過,如果您使用替代策略來處理要求,您的應用程式將會有更好的效能。

線程必須先呼叫 ConvertThreadToFiber 函式,才能使用 SwitchToFiber 函數來排程光纖,以便有與線程相關聯的光纖。

若要編譯使用此函式的應用程式,請將_WIN32_WINNT定義為 0x0400 或更新版本。 如需詳細資訊,請參閱 使用 Windows 標頭

規格需求

需求
最低支援的用戶端 Windows XP [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2003 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 winbase.h (包含 Windows.h)
程式庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

ConvertThreadToFiber

FiberProc

纖維

GetFiberData

處理序和執行緒函式

SwitchToFiber