El acceso a las variables siempre se serializa para que el usuario no necesite una sincronización explícita, a condición de que se utilice una variable del tipo adecuado para el caso correspondiente. Cada tipo de variable determina la semántica de simultaneidad de una situación concreta. Por ejemplo, si se utiliza una variable global para almacenar una cadena que leen y escriben dos conjuntos de reglas diferentes, se garantiza que las lecturas y escrituras serán atómicas. Sin embargo, el valor actual viene determinado por la última instancia del conjunto de reglas que se escriba en la variable.
Si se utiliza una variable de conjunto de reglas para almacenar información transitoria en una cadena de reglas larga, es probable que el valor almacenado ya no se asigne a la variable en el momento en que se recupere. Lo más probable es que se haya sobrescrito con las ejecuciones posteriores del conjunto de reglas. Sin embargo, si se utilizara una variable temporal, el valor seguiría siendo correcto cuando se recuperara, ya que cada ejecución tendría su propia instancia de la variable.
En la siguiente tabla se resumen los posibles tipos de variable para cada uso:
Utilización |
Tipo de variable |
|
|
|
---|---|---|---|---|
|
Global |
Conjunto de reglas |
Temporal |
|
Aislar referencias externas |
Sí |
Quizás |
No |
|
Simplificar referencias complejas de propiedades de eventos |
No |
No |
Sí |
|
Mantener el estado de procesamiento o de ejecución |
Quizás |
Quizás |
Sí |