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 |