Condividi tramite


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

Vedere anche

ConvertThreadToFiber

CreateFiberEx

FiberProc

Fibre

GetFiberData

Funzioni di processi e thread

SwitchToFiber