La Functional Global Variable (FGV) è un design pattern molto utilizzato in quanto gestendo una memoria internamente ed essendo non rientrante viene spesso utilizzato per evitare race condition.
In realtà si evitano race condition solo se questo viene utilizzato inserendo al suo interno il codice operativo, prendendo in questo caso il nome di Action Egine (AE).
Design Pattern Functional Global Variable
Si basa su :
- While Loop con Loop Condition a true (Single Cycle Loop.
- Shift Register non inizializzato.
- Il VI deve essere impostato come non rientrante (default tranne per FPGA in cui è rientrante di default).
- Enumeratore per la scelta delle azioni (Init, Get, Set) salvato come Type Def.
La FGV, limita l’accesso concorrente, ma non lo elimina, situazioni come quella descritta sotto non sono prive di Race condition.
Il vantaggio quindi esclusivo della FGV rimane quello di avere una memoria per il dato con possibilità di inizializzazione o preset.
Action Engine (AE)
Con l’inclusione del codice di esecuzione all’interno della FGV, le cose cambiano, si parla in questo caso di Action Engine e il codice viene eseguito iternamente quindi non sarà possibile il riprodursi di accessi concorrenti.
Ma da programmatori diventa anche un pattern molto comodo in quanto la logica è inserita all’interno di un unico VI, che si potrà modificare, modificadone tutte le istanze in cui viene utilizzato.
Altro vantaggio è lo sfruttare le memorie degli shift register, per esempio tenendo memoria della cassa di un ATM (esame CLD).
Le operazioni si eseguono all’interno, semplificando l’applicazione.
Sei nuovo di labVIEW o lo conosci ma vuoi imparare ad usarlo al meglio?
Se ti stai approcciando a labVIEW potresti trovare interessante una consulenza o uno dei nostri corsi.
I nostri Ingegneri sono tutti LabVIEW Certified Developer e Architect e hanno una profonda esperienza in labview e sistemi di misura.
Possiamo aiutarti con servizi di progettazione completa, consulenza come risrsa aggiunta o tutor per farti partire con la giusta architettura, risparmiandoti gli errori iniziali.