Nell'articolo di Stephen Cleary sulla rivista MSDN " Introduzione a Async / Attendi su ASP.NET "Dice che" ogni thread thread thread su un sistema operativo moderno ha uno stack da 1 MB. " (OS moderno == Windows 7/8 per questa discussione) Ma pensavo che questo fosse 1MB di memoria virtuale e che la memoria fisica fosse allocata dinamicamente man mano che lo stack cresceva. Basandomi sulla conoscenza datata del threading C ++ su altri sistemi operativi, credo che le dimensioni effettive dello stack superino raramente i 64k, specialmente nelle lingue che fanno un uso pesante dell'heap come .NET.
Windows assegna 1 MB di memoria fisica o lo stack assegna dinamicamente più memoria se necessario? Forse è più economico allocare tutto in anticipo ora e fare affidamento su come scambiarlo se necessario? Stavo andando a testare questo usando il profiler ma non vedo come ottenere la dimensione dello stack da esso.