Funzione CreateFiberEx (winbase.h)
Alloca un oggetto fiber, lo assegna uno stack e imposta l'esecuzione per iniziare all'indirizzo iniziale specificato, in genere la funzione fiber. Questa funzione non pianifica la fibra.
Sintassi
LPVOID CreateFiberEx(
[in] SIZE_T dwStackCommitSize,
[in] SIZE_T dwStackReserveSize,
[in] DWORD dwFlags,
[in] LPFIBER_START_ROUTINE lpStartAddress,
[in, optional] LPVOID lpParameter
);
Parametri
[in] dwStackCommitSize
Dimensioni iniziali del 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] dwStackReserveSize
Dimensioni iniziali della riserva dello stack, in byte. Se questo parametro è zero, la nuova fibra usa le dimensioni dello stack riservate predefinite per l'eseguibile. Per altre informazioni, vedere Dimensioni dello stack di thread.
[in] dwFlags
Se questo parametro è zero, lo stato a virgola mobile nei sistemi x86 non viene commutato e i dati possono essere danneggiati se una fibra usa l'aritmetica a virgola mobile. Se questo parametro è FIBER_FLAG_FLOAT_SWITCH, lo stato a virgola mobile viene commutato per la fibra.
Windows XP: Il flag FIBER_FLAG_FLOAT_SWITCH non è supportato.
[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 fiber, 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. Per impostazione predefinita, ogni fibra ha 1 megabyte di spazio dello stack riservato. Pertanto, è possibile creare al massimo 2028 fibre. Se si riducono le dimensioni predefinite dello stack, è possibile creare più fibre. Tuttavia, l'applicazione avrà prestazioni migliori se si usa una strategia alternativa per l'elaborazione delle richieste.
Prima che un thread possa pianificare una fibra usando la funzione SwitchToFiber , deve chiamare la funzione ConvertThreadToFiber in modo che vi sia una fibra associata al thread.
Per compilare un'applicazione che usa questa funzione, definire _WIN32_WINNT come 0x0400 o versione successiva. Per altre informazioni, vedere Uso delle intestazioni di Windows.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows XP [app desktop | App UWP] |
Server minimo supportato | Windows Server 2003 [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | winbase.h (include Windows.h) |
Libreria | Kernel32.lib |
DLL | Kernel32.dll |