LOCKNEW
– Referencia de Lenguaje Spin
LOCKNEW
instrucción: Verifica un nuevo seguro y obtiene su ID.
((PUB
PRI))
LOCKNEW
Regresa: ID (0-7) del seguro que se verificó o -1 si ninguno esta disponible.
Explicación
LOCKNEW
LOCKNEW
LOCKRET
LOCKSET
LOCKCLR
es uno de cuatro comandos de seguros (
,
,
, y
)
utilizado para administrar recursos que son definidos por usuario y se consideran mutuamente
LOCKNEW
exclusivos.
verifica un seguro único del Hub y obtiene el ID de ese seguro. Si no hay
LOCKNEW
seguros disponibles
regresa -1.
Acerca de los Seguros
Un seguro es un mecanismo de semáforo que se usa para comunicarse entre dos o mas
entidades. En el chip Propeller un seguro es simplemente uno de ocho bits globales en un
registro protegido dentro del Hub. El hub mantiene un inventario de cuales seguros están en
uso y sus estados actuales. Los Cogs pueden verificar, activar, limpiar y regresar seguros
según se necesite durante el tiempo de ejecución para indicar si un elemento compartido, tal
como un bloque de memoria, esta disponible o no. Como los seguros se administran a través
del Hub solamente un Cog puede afectarlos a la vez, haciendo esto un mecanismo efectivo de
control.
En aplicaciones donde dos o mas cogs están compartiendo la misma memoria, una
herramienta como un seguro puede ser requerido para prevenir una colisión catastrófica. El
hub previene que ocurran colisiones en datos elementales (tales como byte, word o long) en
cada momento en el tiempo, pero no puede prevenir colisiones "lógicas" en bloques de
múltiples elementos (tales como bloques de bytes, words y longs o una combinación de
estos). Por ejemplo si dos o mas cogs están compartiendo un byte sencillo de memoria
principal , cada uno tiene garantizado el acceso exclusivo a ese byte por naturaleza del hub.
Pero si esos dos cogs comparten múltiples bytes de memoria principal el hub no puede
prevenir que un cog escriba alguno de esos bytes mientras el otro esta leyendo todos; todas
las interacciones del los cogs con esos bytes puede interrumpirse en el tiempo. En este caso el
desarrollador debe diseñar cada proceso (en cada cog que comparte esta memoria) para que
cooperativamente compartan el bloque de memoria de una forma no destructiva. Los seguros
sirven como banderas para notificar a cada cog cuando es seguro manipular un bloque de
memoria o cuando no.
Pagina 126 · Manual Propeller v1.1