2009-11-10 14 views

Respuesta

14

Memoria de montón siempre.

Las variables globales dependen de la plataforma, generalmente se comparten.

La pila es específica de hilo, así como los registros.

+0

Compartido en Linux? – Algific

+0

@data_jepp Sí, compartido en Linux. Si desea tener variables locales "thread-local", puede asignar almacenamiento local de subprocesos utilizando las funciones pthread_ *. –

1

Depende del idioma y la implementación del subproceso. Por ejemplo, no creo que ni siquiera C le permita acceder directamente a los registros de la CPU, por lo que es bastante discutible si, por ejemplo, pthreads comparte registros (lo cual, para el registro, estoy bastante seguro de que no lo hace). También en C, las variables globales son no de hecho asignadas en el montón, aunque pueden estar en otros idiomas.

La pila es más complicada. En C/pthreads, cada hilo tiene su propia pila, pero en otros lenguajes y modelos de subprocesamiento, la situación podría ser mucho más complicada simplemente porque los modelos de pila subyacentes pueden no ser tan simples.

+0

Puede usar el ensamblaje en línea en C para acceder a los registros, pero luego comienza a perder su nombre de "Asamblea portátil". – NVRAM

0

pila: no hay

registros: no

montón: sí (si tiene que elegir Sí o No, las verdaderas respuestas es que depende)

globales: sí

0

El Los valores globales y la memoria de pila se comparten en un proceso multiproceso. Los valores de registro y la memoria de pila son privados para cada hilo.

Cuestiones relacionadas