Diferencias entre Reentrant, Templates y Dynamic VIs

Actualizado el Jul 30, 2023

Reportado en

Software

  • LabVIEW Full
  • LabVIEW Base
  • LabVIEW Professional

Detalles del problema

¿Cuándo uso los Reentrant, Templates y Dynamic VIs ? ¿Cuál es la diferencia entre cada uno de estos tres tipos?

Solución

Reentrant VIs

Reetrant VIs se utilizan cuando desea ejecutar varias instancias del mismo VI simultáneamente. Cuando el VI no es Reentrant, hay un espacio de datos para el VI. Por lo tanto, solo una persona que llama puede ejecutar el VI, por lo que la persona que llama puede tener que "esperar su turno" para usar el VI. Esta es la opción predeterminada para un VI, pero puede configurar un VI para que vuelva a ingresar. Hay dos tipos de Reentrant: Shared Reentrant y Preallocated Reentrant.
Shared Reentrant VIs

Si se selecciona la opción Ejecución Shared clone reentrant, el VI tiene un conjunto de espacios de datos (lo mismo que un conjunto de clones). Inicialmente, solo se crean dos clones cuando comienza el VI que llama. La persona que llama usará uno de estos espacios de datos, pero no sabe cuál, y puede ser una instancia diferente en las llamadas subsiguientes. Cuando no hay suficientes espacios de datos (clones) en el grupo para el número de callers simultáneos, se crean nuevos espacios de datos (clones) y se agregan al grupo. Aquí, la palabra "Shared" de "share clones between instances" significa que los espacios de datos pueden ser utilizados por múltiples callers a lo largo del tiempo. Si hay 20 calls al SubVI, pero esas llamadas ocurren de manera tal que como máximo dos llamadas se realizan al mismo tiempo, la agrupación tendrá solo dos espacios de datos y serán "Shared (Compartidas)" entre las 20 llamadas. Dado que solo se crea la cantidad necesaria de clones de acuerdo con la necesidad actual, se optimiza el uso de la memoria. Para una ejecución más rápida y la mejor optimización de memoria, se recomienda esta opción.

Preallocated Reentrant VIs

Si se selecciona la opción Preallocated clone reentrant execution, a cada caller se le otorga su propio espacio de datos privado (clone). Si hay 20 llamadas al VI, se crearán 20 clones y se agregarán al grupo cuando comience el VI que llama. Es posible que solo dos estén ocupados al mismo tiempo si el patrón de llamada es como el descrito anteriormente. Si es importante que cada llamada a una instancia dada del SubVI use el mismo clon (por ejemplo, si el SubVI necesita mantener datos de call a call), use este tipo de Reentrant VI. Los clones compartidos no funcionarán porque nunca sabría qué instancia del SubVI en la cual se usó por última vez el clon que está a punto de usar, y la información almacenada se "entrecruzaría" de manera impredecible entre los SubVI. El "preasignado (Prellocated)" significa que para cada llamada, se crea un espacio de datos y un clon para esa call. La preasignación (Prellocated) ocurre antes de que se ejecute el VI. Si desea abrir varios paneles frontales del mismo VI, las opciones de SubVI Reentrant no ayudarán.

Si el VI que desea abrir varias veces es un VI de nivel superior, puede duplicar el VI de nivel superior en el disco en un directorio temporal con un nombre único y abrir la nueva instancia de archivo. No es necesario duplicar ningún SubVI, solo el VI de nivel superior. A continuación, puede utilizar el VI Server para abrir y ejecutar las copias.

Templates VIs

Puede convertir un panel de múltiples instancias en un Template VI, y luego abrir el archivo cada vez desde el Template. El Template VI son VIs con la extensión .vit. Puede crear un nuevo VI a partir de una plantilla en File»New»Start from template. Esto crea una nueva instancia del VI, con su propio espacio de memoria. Estos tienen una ubicación de memoria distinta cuando se crean y solo se utilizan como punto de partida para crear otro VI. A continuación, debe configurar si el nuevo VI es o no Reentrant.

Dynamic VIs

Puede abrir Template VI y VI Server. VI Server se utiliza para cargar y ejecutar dinámicamente un VI. Con los SubVI, el código y el espacio de datos del SubVI se cargan cuando se carga el VI de nivel superior. Cuando carga dinámicamente un VI, en lugar de usarlo como SubVI y cargarlo cuando se llama al programa principal, su código no se cargará hasta que el Servidor VI llame al SubVI. Esto ahorra memoria en el tiempo de inicio.

Información adicional

Complete los siguientes pasos para cambiar un VI a reentrante:
  1. Vaya a File»VI Properties .
  1. Vaya a Category »Execution .
  1. Asegúrese de que la opción Reentrancy esté configurada en Shared Preallocated.