Megosztás a következőn keresztül:


Szálverem mérete

Minden új szál vagy szál saját veremterületet kap, amely fenntartott és eredetileg lekötött memóriából áll. A fenntartott memória mérete a virtuális memóriában lévő összes veremfoglalást jelöli. Ezért a fenntartott méret a virtuális címtartományra korlátozódik. Az eredetileg véglegesített lapok csak a fizikai memóriát használják, amíg nem hivatkoznak rájuk; azonban eltávolítják az oldalakat a rendszer teljes véglegesítési korlátjából, amely az oldalfájl mérete és a fizikai memória mérete. A rendszer szükség szerint véglegesíti a további lapokat a fenntartott verem memóriájából, amíg a verem eléri a fenntartott méretet mínusz egy oldallal (amelyet védőlapként használnak a verem túlcsordulásának megakadályozására), vagy a rendszer olyan kevés memóriával rendelkezik, hogy a művelet meghiúsul.

A legjobb, ha a lehető legkisebb veremméretet választja, és véglegesíti a szál vagy szál megbízható futtatásához szükséges vermet. A verem számára fenntartott minden lap más célra nem használható.

A verem felszabadul, amikor a szál kilép. Nem szabadítja fel, ha a szálat egy másik szál leállítja.

A fenntartott és az eredetileg véglegesített veremememória alapértelmezett mérete a végrehajtható fájlfejlécben van megadva. A szál- vagy szállétrehozás meghiúsul, ha nincs elegendő memória a kért bájtok lefoglalásához vagy véglegesítéséhez. A csatoló által használt alapértelmezett veremfoglalási méret 1 MB. Ha az összes szálhoz és szálhoz eltérő alapértelmezett veremfoglalási méretet szeretne megadni, használja a STACKSIZE utasítást a moduldefiníciós (.def) fájlban. Az operációs rendszer a megadott méretet a rendszer foglalási részletességének legközelebbi többszörösére kerekít (általában 64 KB). Az aktuális rendszer foglalási részletességének lekéréséhez használja a GetSystemInfo függvényt.

Az eredetileg véglegesített veremterület módosításához használja a CreateThread, CreateRemoteThreadvagy a CreateFiberfüggvénydwStackSize paraméterét. Ez az érték a legközelebbi lapra lesz kerekítve. A tartalék mérete általában a végrehajtható fejlécben megadott alapértelmezett tartalékméret. Ha azonban a dwStackSize által megadott eredetileg lekötött méret nagyobb vagy egyenlő az alapértelmezett tartalékméretnél, akkor a foglalási méret ez az új véglegesítési méret az 1 MB legközelebbi többszörösére kerekítve.

A fenntartott verem méretének módosításához állítsa a CreateThread vagy CreateRemoteThreaddwCreationFlags paraméterét STACK_SIZE_PARAM_IS_A_RESERVATION és használja a dwStackSize paramétert. Ebben az esetben az eredetileg véglegesített méret a végrehajtható fejlécben megadott alapértelmezett méret. Rostok esetén használja a dwStackReserveSize paramétert CreateFiberEx. A véglegesített méret a dwStackCommitSize paraméterben van megadva.

A SetThreadStackGuarantee függvény beállítja a híváslánchoz vagy szálhoz társított verem minimális méretét, amely a verem túlcsordulási kivételei során lesz elérhető.