Allocates a fiber object, assigns it a stack, and sets up execution to begin at the specified start address, typically the fiber function. This function does not schedule the fiber.
To specify both a commit and reserve stack size, use the
CreateFiberEx function.
Syntax
LPVOID WINAPI CreateFiber(
__in SIZE_T dwStackSize,
__in LPFIBER_START_ROUTINE lpStartAddress,
__in_opt LPVOID lpParameter
);
Parameters
- dwStackSize [in]
-
The initial size of the stack, in bytes. If this parameter is zero, the new fiber uses the default stack size for the executable. For more information, see Thread Stack Size.
- lpStartAddress [in]
-
A pointer to the application-defined function to be executed by the fiber and represents the starting address of the fiber. Execution of the newly created fiber does not begin until another fiber calls the
SwitchToFiber function with this address. For more information of the fiber callback function, see
FiberProc.
- lpParameter [in, optional]
-
A pointer to a variable that is passed to the fiber. The fiber can retrieve this data by using the
GetFiberData macro.
Return Value
If the function succeeds, the return value is the address of the fiber.
If the function fails, the return value is NULL. To get extended error information, call
GetLastError.
Remarks
The number of fibers a process can create is limited by the available virtual memory. For example, if you create each fiber with 1 megabyte of reserved stack space, you can create at most 2028 fibers. If you reduce the default stack size by using the STACKSIZE statement in the module definition (.def) file or
by using CreateFiberEx, you can create more fibers. However, your application will have better performance if you use an alternate strategy for processing requests instead of creating such a large number of fibers.
Before a thread can schedule a fiber using the
SwitchToFiber function, it must call the
ConvertThreadToFiber function so there is a fiber associated with the thread.
To compile an application that uses this function, define _WIN32_WINNT as 0x0400 or later. For more information, see
Using the Windows Headers.
Examples
For an example, see Using Fibers.
Requirements
| Minimum supported client | Windows 2000 Professional |
| Minimum supported server | Windows 2000 Server |
| Header | Winbase.h (include Windows.h) |
| Library | Kernel32.lib |
| DLL | Kernel32.dll |
See Also
- ConvertThreadToFiber
- CreateFiberEx
- FiberProc
- Fibers
- GetFiberData
- Process and Thread Functions
- SwitchToFiber
Send comments about this topic to Microsoft
Build date: 11/19/2009