Freigeben über


CreateFiber-Funktion (winbase.h)

Weist ein Faserobjekt zu, weist ihm einen Stapel zu und richtet die Ausführung so ein, dass die Ausführung an der angegebenen Startadresse beginnt, in der Regel die Fiberfunktion. Diese Funktion plant die Faser nicht.

Verwenden Sie die CreateFiberEx-Funktion , um sowohl eine Commit- als auch eine Reservestapelgröße anzugeben.

Syntax

LPVOID CreateFiber(
  [in]           SIZE_T                dwStackSize,
  [in]           LPFIBER_START_ROUTINE lpStartAddress,
  [in, optional] LPVOID                lpParameter
);

Parameter

[in] dwStackSize

Die anfängliche Commitgröße des Stapels in Bytes. Wenn dieser Parameter 0 ist, verwendet die neue Faser die standardmäßige Commitstapelgröße für die ausführbare Datei. Weitere Informationen finden Sie unter Threadstapelgröße.

[in] lpStartAddress

Ein Zeiger auf die anwendungsdefinierte Funktion, die von der Fasern ausgeführt werden soll, und stellt die Startadresse der Faser dar. Die Ausführung der neu erstellten Faser beginnt erst, wenn eine andere Faser die SwitchToFiber-Funktion mit dieser Adresse aufruft. Weitere Informationen zur Fiber-Rückruffunktion finden Sie unter FiberProc.

[in, optional] lpParameter

Ein Zeiger auf eine Variable, die an die Faser übergeben wird. Die Faser kann diese Daten mithilfe des Makros GetFiberData abrufen.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert die Adresse der Faser.

Wenn bei der Funktion ein Fehler auftritt, ist der Rückgabewert NULL. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Hinweise

Die Anzahl der Fasern, die ein Prozess erstellen kann, wird durch den verfügbaren virtuellen Arbeitsspeicher begrenzt. Wenn Sie beispielsweise jede Faser mit 1 Megabyte reserviertem Stapelspeicher erstellen, können Sie maximal 2028 Fasern erstellen. Wenn Sie die Standardstapelgröße mithilfe der STACKSIZE-Anweisung in der Moduldefinitionsdatei (DEF) oder mithilfe von CreateFiberEx reduzieren, können Sie weitere Fasern erstellen. Ihre Anwendung hat jedoch eine bessere Leistung, wenn Sie eine alternative Strategie für die Verarbeitung von Anforderungen verwenden, anstatt eine so große Anzahl von Fasern zu erstellen.

Bevor ein Thread eine Faser mit der SwitchToFiber-Funktion planen kann, muss er die ConvertThreadToFiber-Funktion aufrufen, damit dem Thread eine Faser zugeordnet ist.

Um eine Anwendung zu kompilieren, die diese Funktion verwendet, definieren Sie _WIN32_WINNT als 0x0400 oder höher. Weitere Informationen finden Sie unter Verwenden der Windows-Header.

Beispiele

Ein Beispiel finden Sie unter Verwenden von Fasern.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile winbase.h (einschließlich Windows.h)
Bibliothek Kernel32.lib
DLL Kernel32.dll

Siehe auch

ConvertThreadToFiber

CreateFiberEx

FiberProc

Fasern

GetFiberData

Prozess- und Threadfunktionen

SwitchToFiber