createFiber 函数 (winbase.h)

分配一个光纤对象,为其分配一个堆栈,并将执行设置为从指定的开始地址(通常是光纤函数)开始。 此函数不会计划光纤。

若要指定提交和保留堆栈大小,请使用 CreateFiberEx 函数。

语法

LPVOID CreateFiber(
  [in]           SIZE_T                dwStackSize,
  [in]           LPFIBER_START_ROUTINE lpStartAddress,
  [in, optional] LPVOID                lpParameter
);

参数

[in] dwStackSize

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

[in] lpStartAddress

指向要由光纤执行的应用程序定义函数的指针,表示光纤的起始地址。 在另一个光纤使用此地址调用 SwitchToFiber 函数之前,新创建的光纤的执行不会开始。 有关光纤回调函数的详细信息,请参阅 FiberProc

[in, optional] lpParameter

指向传递给光纤的变量的指针。 光纤可以使用 GetFiberData 宏检索此数据。

返回值

如果函数成功,则返回值为光纤的地址。

如果函数失败,则返回值为 NULL。 要获得更多的错误信息,请调用 GetLastError。

注解

进程可以创建的光纤数量受可用虚拟内存的限制。 例如,如果创建具有 1 MB 预留堆栈空间的每个光纤,则最多可以创建 2028 个光纤。 如果使用模块定义中的 STACKSIZE 语句 (.def) 文件或使用 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