AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Ayuda / WLanguage / Funciones WLanguage / Funciones estándar / Funciones de gestión de procesos / Hilos, semáforos, señales y mutex
  • Presentación
  • Principio
  • ¿Cómo implementar un mutex?
  • Etapas:
  • Observaciones
  • Funciones de gestión de mutex
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Presentación
Las exclusiones mutuas (Mutex) limitan la ejecución simultánea de un código (procedimiento, línea de código, etc.) a un solo subproceso en un momento dado. Un Mutex se puede compartir entre varias aplicaciones.
Observación: Existen otros sistemas que permiten proteger una sección de código:
  • los semáforos limitan la ejecución simultánea de un código (procedimiento, línea de código, etc.) a uno o más subprocesos en un momento dado. Un semáforo se puede compartir entre varias aplicaciones.
  • las secciones críticas limitan la ejecución simultánea de un código (procedimiento, línea de código, etc.) a un hilo en un momento dado en una sola aplicación.
Principio
El mutex se crea con la función MutexCreate.
  1. El subproceso n°1 ejecuta la función MutexStart: no hay ningún subproceso en el mutex.
  2. El subproceso n°1 ejecuta la sección de código protegida por el mutex.
  3. Mientras que el subproceso n°1 ejecuta el código protegido por el mutex, el subproceso n°2 ejecuta la función MutexStart: dado que el subproceso n°1 está ejecutando el código protegido por el mutex, el subproceso n°2 debe esperar a que se libere el mutex.
  4. El subproceso n°1 ejecuta la función MutexEnd: ningún otro subproceso ejecuta el código del mutex.
  5. El subproceso n°2 puede ejecutar el código protegido por el mutex.
  6. El subproceso n°2 ejecuta la función MutexEnd: ningún otro subproceso ejecuta el código del mutex.
¿Cómo implementar un mutex?

Etapas:

Las etapas para implementar un mutex son las siguientes:
  1. Crear un mutex con la función MutexCreate. El mutex se asocia a un nombre.
  2. Llamar a la función MutexStart antes de la sección de código que se va a proteger.
  3. Llamar a la función MutexEnd para delimitar la sección de código que se va a proteger. Las líneas de código que se encuentran después de MutexEnd no se protegerán.
  4. Destruir el mutex con la función MutexDestroy.

Observaciones

  • Las secciones de código protegidas por un mutex deben ser lo más cortas posible y tratar solo los procesos "críticos".
  • Cuando hay un subproceso en espera, no se utilizan los recursos del procesador.
  • Los mutex se utilizan tanto en el subproceso principal como en los secundarios (creados con la función ThreadExecute). Se debe evitar bloquear el subproceso principal. Si se bloquea el subproceso principal (en espera), no se puede ejecutar la aplicación.
  • Las funciones MutexStart y MutexEnd deben utilizarse en el mismo proceso (en un procedimiento, por ejemplo).
  • Un mutex se puede compartir o no entre las aplicaciones ejecutadas en el equipo. Al crear los mutex, se debe especificar su uso compartido (función MutexCreate).

Funciones de gestión de mutex

Las siguientes funciones WLanguage permiten gestionar los mutex:
MutexCreateCrea explícitamente un mutex.
MutexDestroyDestruye explícitamente un mutex.
MutexEndSeñales de que el hilo libera el mutex.
MutexStartBloquea el actual Thread mientras espera que se libere el mutex.
Versión mínima requerida
  • Versión 16
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 21/06/2023

Señalar un error o enviar una sugerencia | Ayuda local