0 Daumen
26 Aufrufe

Wie viele Thread mit Default-Attributen können auf einem Single-Core 32-Bit Windows-System laufen und warum ist das so? Was passiert, wenn man einen weiteren Thread erzeugen will?

Gefragt von

1 Antwort

+1 Punkt
 
Beste Antwort

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.

Beantwortet von 6,8 k

Ein anderes Problem?

Stell deine Frage

Ähnliche Fragen

0 Daumen
1 Antwort
0 Daumen
1 Antwort
0 Daumen
1 Antwort

Willkommen bei der Stacklounge! Stell deine Frage sofort und kostenfrei

x
Made by a lovely community
...