From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.



¿Qué es un semáforo?



Software Primario: LabVIEW Development Systems>>LabVIEW Full Development System
Versión de Software Primario: N/A
Versión de Software Primario Corregido: N/A
Software Secundario: LabVIEW Development Systems>>LabVIEW Base Development System, LabVIEW Development Systems>>LabVIEW Professional Development System

Problema:
¿Qué es un semáforo y cómo se utiliza en LabVIEW?

Solución:
Un semáforo es una forma de limitar las tareas que pueden operar en forma simultánea en un recurso compartido (protegido). Los recursos protegidos o partes de código críticos pueden incluir las variables globales o comunicaciones con instrumentos externos.Los semáforos son muy similares a los "Mutex" (Objeto de exclusión mutua ) en otros lenguajes de programación.

Son muy útiles protegiendo dos o más secciones críticas del código que no deben de ser llamadas concurrentemente. Antes de hacer uso de una parte crítica del código, el hilo de ejecución debe de adquirir un semáforo. Si el código crítico se encuentra en el momento ejecutando un hilo, el hilo entrante debe esperar hasta que el hilo en ejecución libere el semáforo para poder entrar en forma inmediata.



Figura 1: Los VI's de la paleta del Semáforo (Programming»Synchronization»Semaphore)

Para lograr lo mencionado anteriormente, se debe de crear un semáforo y poner la función de adquirir y de liberar el semáforo (Acquire Semaphore y Release Semaphore) al inicio y final de los códigos críticos, respectivamente. De esta forma, cada subVI puede obtener y liberar el semáforo uno a la vez, para asegurar el flujo de datos apropiado. Al final de la sección, la referencia del semáforo debe de ser liberada y para esto se hace uso de la función "Release Semaphore Reference VI".

Encuentre ejemplos en LabVIEW bajo la siguiente dirección: LabVIEW » Help » Find Examples y realice la búsqueda en la opción de Search.

Ligas Relacionadas:
KnowledgeBase DIRECT-3S8RDE: What Is a Queue?
KnowledgeBase DIRECT-3S8REX: What Is a Rendezvous?
KnowledgeBase DIRECT-3S8RCH: What Is a Notifier?
Developer Zone Example: Using Semaphores to Synchronize Input Operations

Archivos Adjuntos:





Día del Reporte: 10/23/2014
Última Actualización: 10/30/2014
Identificación del Documento: DIRECT-3S8RDV