Según las respuestas anteriores, la sobrecarga básica es de 1 MB por hilo. No entraré en los diversos matices, las otras respuestas los tienen cubiertos.
Para los subprocesos de Microsoft Visual C/C++ también tiene la sobrecarga por subproceso de cualquier espacio de trabajo de tiempo de ejecución de C asignado a petición (y almacenado mediante Thread Local Storage TlsAlloc()) para realizar trabajos como sprintf(), scanf(), strtol() etc. No tengo ninguna cifra exacta: necesitaría escanear el código fuente al CRT de Microsoft para calcular eso.
Para otros/tiempos de ejecución de C C++ (gcc/g ++/Borland/mars digitales) que puede o no puede ser similar datos por hilos mantenidas, su un detalle de implementación.
Ninguno de nosotros sabe la parte interna del motor de ejecución .Net, pero es probable que haya algunos datos por subproceso almacenados allí también. Sin embargo, va a ser difícil descubrir qué es lo que está por encima.
Solo reserva 1MB. Obtiene soporte físico hasta que se usa. ¿Por qué dices que es una mala idea modificarlo? La pila generalmente puede crecer más allá de la reserva inicial, y si 1MB es excesivo para un hilo simple, entonces estás cortando tu espacio de direcciones. –
No dije que fuera una mala idea. Dije que, por lo general, es una mala idea. La creación de miles de millones de subprocesos suele ser la solución incorrecta para un problema, por lo que reducir el tamaño de la pila para que pueda crear miles de millones de subprocesos es casi seguro un error. Sí, hay circunstancias en las que ajustar el tamaño de la pila puede generar ganancias, pero esto solo lo deben hacer las personas que realmente saben lo que hacen. Además, no estoy seguro de a qué te refieres con "la pila generalmente puede crecer más allá de la reserva inicial". AFAIK, no hay API para hacer crecer la pila. –
@Adrian que es un error común. [El CLR realidad ** comete ** 1 MB de RAM por hilo para la pila.] (Http://www.bluebytesoftware.com/blog/PermaLink,guid,733d7537-f982-4886-af62-66bed0f97ab5.aspx) –