Funzione CreateFiber (winbase.h)
Alloca un oggetto fiber, lo assegna uno stack e imposta l'esecuzione per iniziare all'indirizzo iniziale specificato, in genere la funzione fibre. Questa funzione non pianifica la fibra.
Per specificare sia le dimensioni dello stack di commit che di riserva, usare la funzione CreateFiberEx .
Sintassi
LPVOID CreateFiber(
[in] SIZE_T dwStackSize,
[in] LPFIBER_START_ROUTINE lpStartAddress,
[in, optional] LPVOID lpParameter
);
Parametri
[in] dwStackSize
Dimensioni iniziali di commit dello stack, in byte. Se questo parametro è zero, la nuova fibra usa le dimensioni predefinite dello stack di commit per l'eseguibile. Per altre informazioni, vedere Dimensioni dello stack di thread.
[in] lpStartAddress
Puntatore alla funzione definita dall'applicazione da eseguire dalla fibra e rappresenta l'indirizzo iniziale della fibra. L'esecuzione della fibra appena creata non inizia fino a quando un'altra fibra chiama la funzione SwitchToFiber con questo indirizzo. Per altre informazioni sulla funzione di callback fibre, vedere FiberProc.
[in, optional] lpParameter
Puntatore a una variabile passata alla fibra. La fibra può recuperare questi dati usando la macro GetFiberData .
Valore restituito
Se la funzione ha esito positivo, il valore restituito è l'indirizzo della fibra.
Se la funzione ha esito negativo, il valore restituito è NULL. Per informazioni dettagliate sull'errore, chiamare GetLastError.
Commenti
Il numero di fibre che un processo può creare è limitato dalla memoria virtuale disponibile. Ad esempio, se si crea ogni fibra con 1 megabyte di spazio dello stack riservato, è possibile creare al massimo 2028 fibre. Se si riducono le dimensioni predefinite dello stack usando l'istruzione STACKSIZE nel file di definizione del modulo (.def) o usando CreateFiberEx, è possibile creare più fibre. Tuttavia, l'applicazione avrà prestazioni migliori se si usa una strategia alternativa per l'elaborazione delle richieste anziché creare un numero elevato di fibre.
Prima che un thread possa pianificare una fibra usando la funzione SwitchToFiber , deve chiamare la funzione ConvertThreadToFiber in modo che esista una fibra associata al thread.
Per compilare un'applicazione che usa questa funzione, definire _WIN32_WINNT come 0x0400 o versioni successive. Per altre informazioni, vedere Uso delle intestazioni di Windows.
Esempio
Per un esempio, vedere Uso di fibre.
Requisiti
Client minimo supportato | Windows XP [solo app desktop] |
Server minimo supportato | Windows Server 2003 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | winbase.h (include Windows.h) |
Libreria | Kernel32.lib |
DLL | Kernel32.dll |