CreateFiber功能分配光纤对象,为其分配堆栈,并将其设置为以指定的起始地址(通常为光纤功能)开始执行。此函数不计划光纤。
LPVOID CreateFiber(
DWORD 【dwStackSize】, | //初始线程堆栈大小,以字节为单位 |
LPFIBER_START_ROUTINE 【lpStartAddress】, | //指向光纤功能的指针 |
LPVOID 【lpParameter参数】 | //新的纤维参数 |
); |
参数
【dwStackSize】
指定新光纤的堆栈大小(以字节为单位)。如果指定为零,则堆栈大小默认为与主线程大小相同的大小。如果无法提交【dwStackSize】字节,则该函数将失败。请注意,如果需要,系统会动态增加堆栈大小。当线程终止时,堆栈被释放。
【lpStartAddress】
指向由光纤执行的应用程序提供的功能,并表示光纤的起始地址。该函数接受一个参数,不返回值。新创建的光纤的执行不会开始,直到另一个光纤使用该地址调用SwitchToFiber功能。
【lpParameter参数】
指定传递给光纤的单个参数。该值可以使用GetFiberData功能由光纤检索。
返回值
如果功能成功,返回值就是光纤的地址。
如果函数失败,返回值为NULL。要获取扩展错误信息,请调用GetLastError.
备注
在线程可以使用SwitchToFiber 功能调度光纤之前,必须调用ConvertThreadToFiber 功能,因此有一条光纤与线程相关联。
光纤功能的类型为FIBER_START_ROUTINE。它接受PVOID类型(光纤数据)的单个值,并且不返回值。该函数的原型如下:
VOID WINAPI FiberFunc( PVOID lpParameter );
也可以看看