Condividi tramite


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

Vedere anche

ConvertThreadToFiber

FiberProc

Fibre

GetFiberData

Funzioni di processi e thread

SwitchToFiber