VAR
2: Referencia de Lenguaje Spin –
Organización de Variables
VAR
Durante la compilación de un objeto todas las declaraciones en sus bloques colectivos
se
agrupan juntas por tipo. Las variables en RAM se acomodan con todos los long primero,
seguidos por los Word y finalmente los bytes. Esto se hace para que el espacio de RAM se
acomode eficientemente sin necesidad de espacios. Tenga en cuenta accesar las variables
indirectamente basadas en su posición relativa a las otras cuando escribe el código.
Optimizando Direccionamientos
En la aplicación del Propeller compilado, las primeras
ocho (8) variables globales se
direccionan utilizando una codificación optimizada. Esto significa que a las primeras ocho
variables long globales les toma un poco menos de tiempo para accesar que la novena
variable o posterior. Las variables Word y byte no tienen este esquema optimizado. Para
optimizar la velocidad de ejecución asegúrese que todas las variables globales usadas con
mayor frecuencia por la aplicación pertenezcan a las primeras ocho long. Un mecanismo
PUB
similar aplica a las variables locales, ver la sección
, Pág. 189, para mas información.
Alcance de las Variables
VAR
Variables simbólicas definidas en bloques
son globales al objeto en el cual se definieron
pero no fuera de ese objeto. Esto significa que estas variables se pueden accesar directamente
por cualquier método publico o privado en el objeto pero esos nombres no entraran en
conflicto con símbolos definidos en objetos padres o hijos.
Note que los método públicos y privados tienen la facilidad de declarar sus propias variables
PUB
PRI
locales. Ver
, Pág. 186, y
, Pág. 185.
Las variables globales no son accesibles fuera de un objeto a menos que la dirección se pase
a, o de regreso a otro objeto a través de una llamada a método.
Alcance Extendido mas allá de un Cog Sencillo
El alcance de las variables globales no esta limitado a un cog sencillo. Un método publico y
privado de un objeto naturalmente tiene acceso a sus variables globales sin importar en que
cog están corriendo. Si el objeto inicia alguno de sus métodos en múltiples cogs, cada uno de
esos métodos y por lo tanto los cogs en los que esta corriendo, tienen acceso a esas variables.
Esta característica permite a un objeto simple administrar aspectos de múltiples procesos en
una forma centralizada. Por ejemplo un objeto sofisticado puede tomar ventaja de esto
inmediatamente afectando los parámetros globales usados por cada código multiprocesador.
Por supuesto se debe tener cuidado de asegurar que los múltiples procesos en el mismo
LOCKNEW
bloque no genere situaciones no deseadas. Vea
en Pág. 126 para ejemplos.