Solución
Reentrant VIsReetrant 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 VIsPuede 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 VIsPuede 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.