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 |