Jeder neu erzeugte Thread erhält seinen eigenen Stack (für lokale Variablen, Funktionsparameter, Rücksprungadressen etc.) auf dem Adressraum. Es können nicht beliebig viele Threads erzeugt werden. Als Standardwert für den Stack eines Threads wird \(1\)MB reserviert. Ein \(32\)-Bit-Windows-System hat \(2^{32}\) Byte, also \(4\)GB Arbeitsspeicher (\(2\)GB für das System und \(2\)GB für Prozesse). Für Prozesse (auch leichtgewichtige, also Threads) stehen somit nur \(2048\)MB zur Verfügung. Das ergibt (theoretisch) \(2048\) Threads. Ein kleiner Teil des Adressraums wird für Code und Heap verwendet. Somit kommt man experimentell auf nur etwa \(2030\) Threads. Beim dem Versuch einen weiteren Thread zu erzeugen, wird die Funktion CreateThread scheitern, da wir keine Ressourcen mehr zur Verfügung haben. Der Fehler lautet konkret: ERROR_NOT_ENOUGH_MEMORY bzw. ERROR_NO_SYSTEM_RESOURCES.