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

堆栈的初始提交大小(以字节为单位)。 如果此参数为零,则新光纤将使用可执行文件的默认提交堆栈大小。 有关详细信息,请参阅 线程堆栈大小

[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 兆字节的保留堆栈空间。 因此,最多可以创建 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