Está en la página 1de 1

PROGRAMA SEMA

En un programa de ordenador, un semáforo es una herramienta que se utiliza para protegerse de las acciones
que deben ser realizadas por un único proceso o usuario a la vez.
En 4D, la necesidad convencional de uso de un semáforo es para modificar un array interproceso: si un
proceso está modificando los valores del array, otro proceso no debe poder hacer lo mismo al mismo
tiempo. El desarrollador utiliza un semáforo para indicar a un proceso que sólo puede realizar su secuencia de
operaciones si ningún otro proceso está llevando a cabo las mismas tareas. Cuando un proceso se encuentra
con un semáforo, hay tres posibilidades:

 Obtiene inmediatamente el derecho a pasar


 Espera su turno hasta que obtiene el derecho a pasar
 Continúa su camino, abandonando la idea de realizar las tareas.

Por lo tanto, el semáforo protege partes del código. Se permite pasar sólo un proceso a la vez y bloquea el
acceso hasta que el proceso que tiene actualmente el derecho de uso renuncia a este derecho liberando el
semáforo.

Comandos de manipulación de los semáforos  

En 4D, se establece un semáforo llamando a la función Semaphore. Para liberar un semáforo, se llama


al comando CLEAR SEMAPHORE.
La función Semaphore tiene un comportamiento muy especial ya que realiza potencialmente dos acciones a
la vez:

 Si el semáforo ya está asignado, la función devuelve True


 Si no se asigna el semáforo, la función lo asigna al proceso y devuelve False al mismo tiempo.

Esta doble acción realizada por el mismo comando asegura que ninguna operación externa se puede


insertar entre la prueba del semáforo y su asignación.
Puede utilizar el comando Test semaphore para saber si un semáforo ya está asignado o no. Este
comando se utiliza principalmente como parte de las operaciones largas, tales como el cierre anual de las
cuentas, en donde Test semaphore le permite controlar la interfaz para evitar el acceso a ciertas operaciones
tales como la adición de los datos contables.

También podría gustarte